我正在尝试处理目录中的一些文件而不知道他们的名字,并逐个处理.所以我习惯os.listdir(path)列出文件.
所以我必须在每次调用函数时列出文件.问题是当有很多文件(比如2000)时,列出每个文件需要花费很多时间,我只想要第一个文件.
是否有任何解决方案获得名字而不列出每个文件?
谢谢 :)
Mic*_*lon 10
os.listdir(path)[0]
Run Code Online (Sandbox Code Playgroud)
它会比"列出"(打印?)每个文件名更快,但仍然需要将所有文件名加载到内存中.此外,哪个文件是第一个文件,您是否只想要先出现哪个文件或者是否有您想要的特定文件,因为这是不同的.
看起来您正在尝试批量处理文件,并且您将在某个时刻迭代所有文件。与其每次输入函数时都调用该方法,为什么不使用全局参数以便只加载列表一次呢?因此,例如,而不是:
import os
def foo(path):
os.listdir(path)[0]
Run Code Online (Sandbox Code Playgroud)
你有:
import os
fnames = os.listdir(path)
def foo(path):
fnames[0]
Run Code Online (Sandbox Code Playgroud)
如果您的目标是处理每个文件名,请使用 os.walk() 生成器:
Help on function walk in module os:
walk(top, topdown=True, onerror=None, followlinks=False)
Directory tree generator.
Run Code Online (Sandbox Code Playgroud)