filter(os.path.isfile,os.listdir('DIRECTORY'))
返回不同的結果:分歧
os.listdir('DIRECTORY')
在CSV文件的目錄中,listdir同時命令返回一組文件(如預期),但過濾器沒有返回(意外)
filter(os.path.isfile,os.listdir('DIRECTORY'))
返回不同的結果:分歧
os.listdir('DIRECTORY')
在CSV文件的目錄中,listdir同時命令返回一組文件(如預期),但過濾器沒有返回(意外)
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
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))]
想看的目錄清單,並在過濾器是如何實現的。 – Hun
你是否將該目錄預先添加到文件中? 'listdir(「\ path \ to \ dir \」)'會返回類似'[「file1.txt」,「file2.dat」,...]''然後你需要調用'isfile(「\ path \ to \目錄\ FILE1.TXT「)'。 – Julien