繁体   English   中英

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

[英]Python, using glob with cwd argument to subprocess.call

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

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

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

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

您也可以在 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)

或者您可以在子进程完成后将目录更改回原处。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM