0

我大约有 100 个文件,每个文件存储在不同的目录中。我已经编写了一个脚本,但目前我正在为所有这些文件一次运行这个脚本。我知道如果我将这些文件保存在一个目录中,我可以使用 os.chdir、os.listdir 一个接一个地运行它们。但对我来说,将它们移动到一个目录不是一种选择。有没有办法按顺序连续执行所有这些文件,让我的生活更轻松?

4

2 回答 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 回答