我想使用subprocess.call()在python中调用子进程,使用' cwd'参数,以便此特定子进程在不同的目录中执行。我不想使用os.chdir(),因为对于以后在程序中的进程,我希望保留在运行程序的原始目录中。
但是,我还想在一组匹配glob模式的文件上运行这个特定的子进程。例如,我可能想要
subprocess.call(['ls'] + glob('*.txt'), cwd="/my/other/dir/")
但是当然glob命令并不知道查看/ my / other / dir,所以它失败了。如何在不使用shell = True的情况下执行此操作?
答案 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)
或者您可以在子流程完成后更改目录。