我想在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)