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

时间:2015-10-19 10:17:47

标签: python subprocess glob

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

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

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

但是当然glob命令并不知道查看/ my / other / dir,所以它失败了。如何在不使用shell = True的情况下执行此操作?

1 个答案:

答案 0 :(得分:2)

您也可以在glob模式中使用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)

或者您可以在子流程完成后更改目录。