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