我大约有100个文件存储在不同的目录中。我编写了一个脚本,但目前我正在为所有这些文件一次运行一个脚本。我知道如果我将这些文件保存在一个目录中,我可以使用os.chdir,os.listdir一个接一个地运行它们。 但对我来说,将它们移动到一个目录不是一种选择。 有没有办法在订单中连续执行所有这些文件,让我的生活更轻松?
答案 0 :(得分: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
答案 1 :(得分: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
当然,如果您已将脚本克隆到100个目录中,那么您可以通过bash运行它:
for DIR in directory_glob_pattern; do cd $DIR && python runscript.py && cd -; done