有没有办法用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