.jpg)
我需要遍历给定目录中的所有文件并对其执行一些操作。.asm
如何以有效的方式做到这一点?

Python 3.6 版本的上述答案,使用 – 假设您将目录路径作为对象存储在名为 :osstrdirectory_in_str
import os
directory = os.fsencode(directory_in_str)
for file in os.listdir(directory):
filename = os.fsdecode(file)
if filename.endswith(".asm") or filename.endswith(".py"):
# print(os.path.join(directory, filename))
continue
else:
continue
或者递归地使用 :pathlib
from pathlib import Path
pathlist = Path(directory_in_str).glob('**/*.asm')
for path in pathlist:
# because path is object not string
path_in_str = str(path)
# print(path_in_str)
rglobglob('**/*.asm')rglob('*.asm')
Path.glob() 时在给定的相对模式前面添加了“**/”:from pathlib import Path
pathlist = Path(directory_in_str).rglob('*.asm')
for path in pathlist:
# because path is object not string
path_in_str = str(path)
# print(path_in_str)
原答案:
import os
for filename in os.listdir("/path/to/dir/"):
if filename.endswith(".asm") or filename.endswith(".py"):
# print(os.path.join(directory, filename))
continue
else:
continue

这将遍历所有后代文件,而不仅仅是目录的直接子级:
import os
for subdir, dirs, files in os.walk(rootdir):
for file in files:
#print os.path.join(subdir, file)
filepath = subdir + os.sep + file
if filepath.endswith(".asm"):
print (filepath)

您可以尝试使用 glob 模块:
import glob
for filepath in glob.iglob('my_dir/*.asm'):
print(filepath)
从 Python 3.5 开始,您也可以搜索子目录:
glob.glob('**/*.txt', recursive=True) # => ['2.txt', 'sub/3.txt']
从文档中:
glob 模块根据 Unix shell 使用的规则查找与指定模式匹配的所有路径名,尽管结果以任意顺序返回。不进行波浪号扩展,但 *、? 和用 [] 表示的字符范围将正确匹配。
模板简介:该模板名称为【Python 如何迭代给定目录中的文件?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Python】栏目查找您需要的精美模板。