在不同的目录python中执行类似的文件

时间:2013-05-08 12:45:22

标签: python

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

2 个答案:

答案 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
相关问题