如何迭代给定目录中的文件?
我需要循环访问给定目录中的所有文件,并对它们执行一些操作。.asm
如何以有效的方式做到这一点?
我需要循环访问给定目录中的所有文件,并对它们执行一些操作。.asm
如何以有效的方式做到这一点?
Python 3.6版本上面的答案,使用os-假设你有目录路径作为对象的变量,叫做:strdirectory_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)
rglob 替换glob('**/*.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)