有沒有辦法用Python列出目錄中的文件(不是目錄)?我知道我可以使用os.listdir
和os.path.isfile()
的循環,但是如果有更簡單的東西(比如函數os.path.listfilesindir
或其他),它可能會更好。僅列出目錄中的文件?
回答
這是a simple generator expression:
files = (file for file in os.listdir(path)
if os.path.isfile(os.path.join(path, file)))
for file in files: # You could shorten this to one line, but it runs on a bit.
...
或者你可以做一個發電機的功能,如果它適合你最好:
def files(path):
for file in os.listdir(path):
if os.path.isfile(os.path.join(path, file)):
yield file
然後簡單:
for file in files(path):
...
爲什麼我得到一個downvote呢? –
您忘記了在dirname和filename之間添加連接 – ayvango
@ayvango這只是一種不同的行爲 - 沒有要求在問題中提供完整路徑,並且這種行爲按照定義明確的方式工作。 –
你可以試試pathlib,還有很多其他有用的東西。
Pathlib是一個面向對象的庫,用於與文件系統路徑進行交互。爲了獲得在當前目錄下的文件,可以這樣做:
from pathlib import *
files = (x for x in Path(".") if x.is_file())
for file in files:
print(str(file), "is a file!")
這一點,在我看來,超過使用os.path
Python的。也可以參照:PEP 428。
一個常見的建議是避免這種導入。也就是說,只是導入你使用的東西,在你的情況下,它只是'從pathlib導入路徑'。 – Tshepang
雖然'pathlib'很好,但我會認爲它取決於手頭的腳本 - 如果它只處理文件幾次,取決於'pathlib'可能是矯枉過正的。 –
在Windows中使用pathlib如下:
files = (x for x in Path("your_path") if x.is_file())
生成錯誤:
TypeError: 'WindowsPath' object is not iterable
你還是使用Path.iterdir()
filePath = Path("your_path")
if filePath.is_dir():
files = list(x for x in filePath.iterdir() if x.is_file())
files = next(os.walk('..'))[2]
使用pathlib
,最近的路ŧ o僅列出文件是:
[x for x in Path("your_path").iterdir() if x.is_file()]
如果需要的話可以提供深度支持。
- 1. 僅列出目錄中的文件夾
- 2. 僅列出目錄中的文件夾
- 3. 僅列出bash中的目錄和子目錄中的文件名
- 4. 僅列出目錄中的數字文件名
- 5. 如何列出僅在魚殼中的文件/目錄?
- 6. 僅列出目錄中的文本文件並編輯每個文本文件
- 7. Kivy FileChooser:僅列出目錄
- 8. Java FileFilter僅列出目錄
- 9. 列出目錄+子目錄中的所有文件和目錄
- 10. 列出目錄中的Java文件
- 11. PHP來列出目錄中的文件
- 12. OpenCV C++列出目錄中的文件?
- 13. 如何列出目錄中的文件?
- 14. 列出目錄中的所有文件
- 15. 列出目錄中的多個文件
- 16. 僅在cakephp設置中列出目錄
- 17. 僅列出文件的常用父目錄
- 18. 僅列出文件,但不包含使用list.files的目錄
- 19. 列出目錄和子目錄中的MP3文件在PHP中
- 20. 使用C++列出目錄中的文件,而不是遞歸,僅文件和子目錄
- 21. tar僅列出歸檔文件而不是目錄
- 22. 在目錄中列出文件
- 23. 在c目錄中列出文件
- 24. 在DataGrid中列出目錄文件
- 25. 在C++目錄中列出文件
- 26. 從目錄中列出* .xyz文件
- 27. 在codeigniter/php目錄中列出文件
- 28. Java在目錄中列出文件
- 29. 列出目錄中的文件和所有子目錄
- 30. 列出目錄和子目錄中的所有jpg文件
[相關](http://stackoverflow.com/q/6664205) – Tshepang