filter(os.path.isfile,os.listdir('DIRECTORY'))
返回与:
不同的结果os.listdir('DIRECTORY')
在CSV文件的目录中,listdir命令返回一组文件(如预期的那样),但过滤器不返回任何内容(意外)
答案 0 :(得分:0)
os.listdir(path) #will return all content of that folder
filter(os.path.isfile, os.listdir(path)) # will return only list of files
filter(os.path.isdir, os.listdir(path)) # will return only list of directories
答案 1 :(得分:0)
os.listdir()
返回不包含路径的文件名列表。这意味着os.listdir("/home/zondo")
可能会["dir1", "file1", "file2"]
。现在让我们说我们在dir1
执行此命令时。我们首先看看dir1
是否存在。它没有filter()
移动到下一个。为什么它不存在?因为我们没有提供绝对的路径;我们提供了一条相对路径。由于我们在dir1
,os.path.isfile()
正在查看/home/zondo/dir1/dir1
是否为文件。当然不是;它不存在。你需要提供它的路径。您可以使用lambda
函数:
filter(lambda x: os.path.isfile(os.path.join(dir, x)), os.listdir("DIRECTORY"))
在这种情况下使用列表理解可能会更好:
[x for x in os.listdir("DIRECTORY") if os.path.isfile(os.path.join(dir, x))]