gpt4 book ai didi

python - 如何在 python 脚本中的子进程中使用 *?

转载 作者:行者123 更新时间:2023-11-28 22:38:27 25 4
gpt4 key购买 nike

我正在尝试删除我在 Python 2.7 中编写的一些代码中的大量文件夹,要删除的文件夹与我正在运行的代码位于同一文件夹中。为此,我按以下方式使用子流程:

import subprocess


def runsafe(job,args):
jobs=[job];
for arg in args:
jobs.append(arg)
proc=subprocess.Popen(jobs,stdout=subprocess.PIPE)
return proc.stdout.readlines()


if __name__=="__main__":
runsafe("rm",["-r","./*/"])

如果我这样做,代码不会删除任何文件夹。显然,如果我在我的终端中写入 rm -r ./*/,我运行代码的文件夹中的所有文件夹都会被删除。另外,如果我在代码中将 runsafe("rm",["-r","./*/"]) 更改为 runsafe("rm",["-r", "./foo/"])(其中 foo 是要删除的文件夹之一)代码工作正常并删除了所需的文件夹。

如何一次删除所有文件夹?为什么我用*表示我要删除所有文件夹,但它不起作用?

最佳答案

您不能使用 *因为subprocess不在 shell 中运行(例如 Bash),它是扩展 * 的 shell放入文件列表中。

可以使用shell=True告诉subprocess在 shell 中运行,但是这个 isn't a great idea ,还有更好的选择。

如果需要recursively delete a directory你可以使用 shutil.rmtree() 并完全避免启动子流程。

关于python - 如何在 python 脚本中的子进程中使用 *?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35580188/

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