我大约有 100 个文件,每个文件存储在不同的目录中。我已经编写了一个脚本,但目前我正在为所有这些文件一次运行这个脚本。我知道如果我将这些文件保存在一个目录中,我可以使用 os.chdir、os.listdir 一个接一个地运行它们。但对我来说,将它们移动到一个目录不是一种选择。有没有办法按顺序连续执行所有这些文件,让我的生活更轻松?
问问题
50 次
2 回答
1
您通常可以os.walk
用于这种事情:
import os
for root, dirs, files in os.walk(os.path.abspath("/parent/dir/")):
for file in files:
if os.path.splitext(file)[1] == '.py':
print os.path.join(root, file)
也适用于fnmatch
:
import os
import fnmatch
for root, dirnames, filenames in os.walk("/parent/dir/"):
for filename in fnmatch.filter(filenames, '*.py'):
# do your thing here .. execfile(filename) or whatever
于 2013-05-08T12:50:09.307 回答
0
我有点困惑。如果您想通过更改当前目录从 python 中完成所有这些操作(可能是因为您的函数使用相对路径):
directory_list = [ ... ] #list of directories. You could possibly get it from glob.glob
here = os.getcwd() #remember the "root" directory
for directory in directory_list:
os.chdir(directory) #change to the "work" directory
#do work in "work" directory
os.chdir(here) #go back to the root directory
Of course, if you already have the script cloned into your 100 directories, then you can just run it via bash:
for DIR in directory_glob_pattern; do cd $DIR && python runscript.py && cd -; done
于 2013-05-08T12:50:22.893 回答