如何使用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