gpt4 book ai didi

Python,将 glob 与 cwd 参数一起使用到 subprocess.call

转载 作者:太空宇宙 更新时间:2023-11-04 03:25:27 25 4
gpt4 key购买 nike

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

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

关于Python,将 glob 与 cwd 参数一起使用到 subprocess.call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33211918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com