Python,使用带有cwd参数的glob来subprocess.call



我想在python中使用subprocess.call()调用子进程,带有'cwd'参数,以便在不同的目录中执行此特定的子进程。我不想使用os.chdir(),因为对于程序后面的后续进程,我想保留在程序运行的原始目录中。

但是,我还想在一组匹配glob模式的文件上运行这个特定的子进程。例如,我想输入

subprocess.call(['ls'] + glob('*.txt'), cwd="/my/other/dir/")

但是glob命令当然不知道在/my/other/dir中查找,所以它失败了。我怎么能做到这一点,而不使用shell=True?

您也可以在全局模式中使用CWD。比如glob.glob("/my/other/dir/*.txt")。它会膨胀到完全匹配,就像/my/other/dir/aa.txt一样。如果您不想将完整路径传递给可执行文件,请将其截断。

CWD = "/my/other/dir/"
files = map(lambda x: x[len(CWD):], glob.glob(CWD + "*.txt"))
subprocess.call(['ls'] + files, cwd=CWD)

最新更新