Python:选择目录中的第一个文件
我试图在不知道文件名的情况下逐个处理目录中的一些文件。 所以我使用了Python:选择目录中的第一个文件,python,file,Python,File,我试图在不知道文件名的情况下逐个处理目录中的一些文件。 所以我使用了os.listdir(path)来列出文件 因此,我必须在每次调用函数时列出文件。问题是当有很多文件(比如2000)时,列出每个文件需要很长时间,我只想要第一个 是否有任何解决方案可以在不列出每个文件的情况下获得第一个名称 谢谢:) 它将比“列出”(打印?)每个文件名更快,但它仍然必须将所有文件名加载到内存中。另外,哪一个文件是第一个文件,您是只想要第一个文件,还是有一个您想要的特定文件,因为这是不同的。似乎您正在尝试整体处理文
os.listdir(path)
来列出文件
因此,我必须在每次调用函数时列出文件。问题是当有很多文件(比如2000)时,列出每个文件需要很长时间,我只想要第一个
是否有任何解决方案可以在不列出每个文件的情况下获得第一个名称
谢谢:)
它将比“列出”(打印?)每个文件名更快,但它仍然必须将所有文件名加载到内存中。另外,哪一个文件是第一个文件,您是只想要第一个文件,还是有一个您想要的特定文件,因为这是不同的。似乎您正在尝试整体处理文件,并且您将在某个点迭代所有文件。与其每次输入函数时都调用该方法,为什么不使用一个全局参数,以便只加载一次列表?因此,例如,不是:
import os
def foo(path):
os.listdir(path)[0]
你有:
import os
fnames = os.listdir(path)
def foo(path):
fnames[0]
如果您的目标是处理每个文件名,请使用os.walk()生成器:
Help on function walk in module os:
walk(top, topdown=True, onerror=None, followlinks=False)
Directory tree generator.
哪一个是第一个文件?而且,如果您使用的是linux这样的操作系统,那么在一个目录中有大量文件本身就可能会降低速度。如果你用一个viever文件或者仅仅是ls,它可能需要相当长的时间,我会处理它们中的每一个,所以我真的不在乎哪一个是第一个。基本上,只要其中一个就足够了。我不必通过ls或文件查看器列出它们,所以现在我不会感到困扰。谢谢你的回复。我的意思是操作系统的api函数没有O(N)符号,它们比O(N)符号慢。一旦超过一定数量的文件,只需将一些文件移动到不同的目录中,就可以加快这些API的速度。哦!好啊因此,将它们分类到不同的目录将是提高速度的一件好事。我会的。谢谢你不能重构你的函数,使它不必每次都得到列表吗?这不是我所期望的,因为我的函数会为每个文件返回一个对象,并且在执行过程中会出现新的文件。但我想我会按照你说的做:列出所有的对象,处理所有的对象,然后返回一个对象列表。谢谢你,顺便说一句!如果你觉得这充分回答了你的问题,点击我帖子顶部的复选按钮:)我现在没有足够的声誉。。。(15必选)我已经考虑过了,但该程序继续在内部列出文件并减慢进程:/似乎正是我想要的(使用
中断
),我将很快进行测试。谢谢。@Lerenn您是否只找到了一个文件,而不必查看整个文件列表?如果是这样,你能告诉我怎么做吗?@SuryaPalaniswamy最简单的方法是走
,直到找到你的文件,然后断开
,这样它就不会遍历further@dtasev我实际上没有一个具体的文件本身。我希望一个项目只需从文件夹中随机选择一个文件并将其移动到其他位置,然后在给定的迭代中这样做。由于文件太长,无法列出然后移动,因此我想找到一种方法,只需随机选择一个文件,而不必列出所有文件。
Help on function walk in module os:
walk(top, topdown=True, onerror=None, followlinks=False)
Directory tree generator.