在Python中,我只想列出当前目录中的所有文件。我不希望从任何子目录或父目录中列出文件。
似乎确实有类似的解决方案,但它们似乎对我不起作用。这是我的代码段:
import os for subdir, dirs, files in os.walk('./'): for file in files: do some stuff print file
假设我在当前目录中有2个文件holygrail.py和Tim。我也有一个文件夹,其中包含两个文件- 我们称它们为Arthur和Lancelot。当我运行脚本时,这就是我得到的:
holygrail.py Tim Arthur Lancelot
我对holygrail.py和Tim感到满意。但是我不想列出亚瑟(Arthur)和兰斯洛特(Lancelot)这两个文件。
只需使用os.listdir和os.path.isfile替代的os.walk。
os.listdir
os.path.isfile
os.walk
例:
import os files = [f for f in os.listdir('.') if os.path.isfile(f)] for f in files: # do something
但在将此应用到其他目录时要小心,例如
files = [f for f in os.listdir(somedir) if os.path.isfile(f)].
这将不起作用,因为f它不是完整路径,而是相对于当前目录的路径。
f
因此,要过滤另一个目录,请执行 os.path.isfile(os.path.join(somedir, f))
os.path.isfile(os.path.join(somedir, f))