我使用os.listdir
,它工作正常,但我也得到了列表中的子目录,这不是我想要的:我只需要文件。Python - 如何在os.listdir中找到文件和跳过目录
我需要使用哪些功能?
我也看着os.walk
这似乎是我想要的,但我不知道它是如何工作的。
我使用os.listdir
,它工作正常,但我也得到了列表中的子目录,这不是我想要的:我只需要文件。Python - 如何在os.listdir中找到文件和跳过目录
我需要使用哪些功能?
我也看着os.walk
这似乎是我想要的,但我不知道它是如何工作的。
您需要过滤掉目录; os.listdir()
列出给定路径中的所有名称。您可以使用os.path.isdir()
这个:
basepath = '/path/to/directory'
for fname in os.listdir(basepath):
path = os.path.join(basepath, fname)
if os.path.isdir(path):
# skip directories
continue
os.walk()
做引擎盖下同样的工作;除非你需要递减子目录,否则你不需要在这里使用os.walk()
。
for fname in os.listdir('.'):
if os.path.isdir(fname):
pass # do your stuff here for directory
else:
pass # do your stuff here for regular file
这里是一个不错的一个班轮在列表理解的形式:
[f for f in os.listdir(your_directory) if os.path.isfile(os.path.join(your_directory, f))]
这将return
文件名的指定your_directory
内list
。
可选:'filter(os.path.isfile,os.listdir(your_directory))' –
这实际上并不起作用,因为'f'是一个文件名,而不是一个完整的路径。你需要'os.path.isfile(os.path.join(your_directory,f))'那里。 –
import os
filter(os.path.isfile, os.listdir(os.curdir))
os.curdir是当前目录
正是我一直在寻找。以实例更多知识。我必须选择一个答案,但是我会尝试和研究所有三个增加的概念。 – Bartee