如何使用Python讀取特定文件夾中的文件數量?示例代碼將非常棒!如何使用Python讀取文件夾中的文件數量?
回答
要非遞歸計數文件和目錄,您可以使用os.listdir
並取其長度。
要遞歸計算文件和目錄,可以使用os.walk
遍歷目錄中的文件和子目錄。
如果您只想計算文件不是目錄,你可以使用os.listdir
和os.path.file
檢查每個條目是一個文件:
import os.path
path = '.'
num_files = len([f for f in os.listdir(path)
if os.path.isfile(os.path.join(path, f))])
或可選擇地使用發電機:
num_files = sum(os.path.isfile(os.path.join(path, f)) for f in os.listdir(path))
或者你可以使用os.walk
如下:
len(os.walk(path).next()[2])
我從this thread發現了其中的一些想法。
可以使用glob模塊:
>>> import glob
>>> print len(glob.glob('/tmp/*'))
10
或者,正如馬克拜爾斯建議在他的回答,如果你只想文件:
>>> print [f for f in glob.glob('/tmp/*') if os.path.isfile(f)]
['/tmp/foo']
>>> print sum(os.path.isfile(f) for f in glob.glob('/tmp/*'))
1
馬克·拜爾的答案很簡單,優雅,伴隨着蟒蛇精神。
有一個問題,但是:「」如果你試圖運行任何其他的目錄下,它會失敗,因爲os.listdir()返回的文件,而不是完整路徑的名稱。列出當前工作目錄時,這兩者是相同的,所以錯誤在上面的源代碼中未被發現。例如,如果你在「/ home/me」並列出「/ tmp」,你會得到(比如說)['flashXVA67']。您將使用上述方法測試「/ home/me/flashXVA67」而不是「/ tmp/flashXVA67」。
可以使用os.path.join()解決這一問題,像這樣:同樣
import os.path
path = './whatever'
count = len([f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f))])
,如果你打算做這個數很多,需要的性能,你可能想要做它不會產生額外的清單。這裏有一個不太優雅,但unpythonesque有效的解決方案:
import os
def fcount(path):
""" Counts the number of files in a directory """
count = 0
for f in os.listdir(path):
if os.path.isfile(os.path.join(path, f)):
count += 1
return count
# The following line prints the number of files in the current directory:
path = "./whatever"
print fcount(path)
看看bstpierre的回答。 – SilentGhost 2010-10-07 16:51:08
確實!看起來比我的好,如果你正在閱讀這篇文章,請回頭看看第一個答案,Mark用walk()做了一個補充,解決了我在一行中指出的兩個問題。 – slezica 2010-10-07 17:05:43
+1發現錯誤 - 我更新了我的答案和更正後的版本。 – 2010-10-08 03:28:18
total = len(filter(
lambda f: os.path.isfile(os.path.join(path_to_dir, f)),
os.listdir(path_to_dir)))
OR
total = sum([True for f in os.listdir(path_to_dir) if os.path.isfile(os.path.join([path_to_dir, f)])
pathlib
,在v是新的3.4,使得像容易。標記爲的行生成當前文件夾的非遞歸列表,該遞歸列表標記爲的遞歸列表。
from pathlib import Path
import os
os.chdir('c:/utilities')
print (len(list(Path('.').glob('*')))) ## 1
print (len(list(Path('.').glob('**/*')))) ## 2
還有更多的好東西。有了這些額外的行,您可以看到文件爲文件的那些項目的絕對文件名和相對文件名。
for item in Path('.').glob('*'):
if item.is_file():
print (str(item), str(item.absolute()))
結果:
boxee.py c:\utilities\boxee.py
boxee_user_catalog.sqlite c:\utilities\boxee_user_catalog.sqlite
find RSS.py c:\utilities\find RSS.py
MyVideos34.sqlite c:\utilities\MyVideos34.sqlite
newsletter-1 c:\utilities\newsletter-1
notes.txt c:\utilities\notes.txt
README c:\utilities\README
saveHighlighted.ahk c:\utilities\saveHighlighted.ahk
saveHighlighted.ahk.bak c:\utilities\saveHighlighted.ahk.bak
temp.htm c:\utilities\temp.htm
to_csv.py c:\utilities\to_csv.py
- 1. 如何在python中使用增量文件名讀取文件?
- 2. 如何從python中的多個文件夾中讀取文件
- 3. 如何使用彈簧批量連續讀取文件夾中的文件?
- 4. 如何使用htaccess文件從文件夾中讀取圖像
- 5. 如何使用PHP從apache文件夾中讀取文件
- 6. 如何使用python讀取加密的文件夾
- 7. 使用python從文件夾讀取文件
- 8. 如何獲取Perforce中文件夾中的文件數量?
- 9. Python - 讀取其他文件夾/目錄中的文本文件
- 10. 如何使用Python Dropbox API v2讀取Dropbox文件夾內的文件?
- 11. Python - 如何從服務器讀取路徑文件/文件夾
- 12. JavaScript:讀取文件夾中的文件
- 13. 讀取文件夾中的文件
- 14. 如何用minizip讀取子文件夾中的文件
- 15. 如何使用Python讀取此文件?
- 16. 如何使用python讀取.evtx文件?
- 17. 如何使用Python讀取.dif文件
- 18. 如何使用python讀取.cbr文件?
- 19. 使用StreamReader讀取文件夾中的所有文本文件
- 20. 如何使用MuPDF從Android資產文件夾讀取文件?
- 21. 如何使用MATLAB從文件夾讀取img格式文件
- 22. 如何使用python代碼搜索文件夾中xlsm文件的數量?
- 23. 在mac中通過python讀取文件夾中的文件
- 24. 從文件夾使用流讀取器讀取文件在c#
- 25. 如何從python文件中使用PHP讀取變量?
- 26. 如何讀取文件夾中的所有txt文件? (包括子文件夾)
- 27. 如何讀取父文件夾和子文件夾中的特定文件(.xml)
- 28. 如何從文件夾中讀取WEB-INF文件夾外部的文件?
- 29. 如何從文件夾中讀取文件並在文檔中使用它們
- 30. 如何讀取Xamarin中資產文件夾中的.lcf文件
應該說,即'os.listdir(」。 ')'包括隱藏文件(從一個點),而'水珠(' ./* ')'不。 – lunaryorn 2010-10-07 17:23:46
@lunaryorn - 如果你想在當前目錄下隱藏文件,使用'glob('。*')'。如果你想要一切包括隱藏文件,使用'glob('。*')+ glob('*')'。 – bstpierre 2010-10-07 19:16:21