我使用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