首页 > 解决方案 > Python:subprocess.run(["rm", "*.jpg"]) 没有运行

问题描述

我正在制作一个从网站获取一些图片并显示它们的脚本。基本上,它是一个智能相框程序,可以跟上每天更改图片的网站。我无法让 Python 的 subprocess.run 方法运行一个简单的 rm *.jpg:

subprocess.run(["rm", "-fv", "*.jpg"])

或者我试过:

subprocess.run(["rm", "*.jpg"])

我做了一些故障排除,最重要的是我发现有缺陷。wget 运行良好,脚本的其余部分也运行良好。wget 在 rm 之后运行:

subprocess.run(["wget", "-nd", "-p", "--accept=.jpg", "-e", "robots=off", "--reject=0.jpg", "--reject=8.jpg", "fnitemshop.com"])

我尝试在 rm 之前添加以下几行,但我已经注释掉了,因为它们未能解决我的问题:

#subprocess.run(["chmod", "a+r+w+x", "*.jpg"])
#subprocess.run(["unlink", "*.jpg"])

我也试过:

    subprocess.run(["rm", "*.jpg"], shell=True)

不用说我有点困惑。

解决方案

原来问题是使用双引号,应该使用单引号。像这样:

subprocess.run(['rm *.jpg'], shell=True)

感谢 Tamaki Sakura 对这个问题的回答。

标签: pythonlinuxraspberry-pisubprocessrm

解决方案


subprocess没有在 shell 中运行你的命令,所以你*没有得到扩展。您可以添加shell=True以使其做到这一点,但使用这样的 shell 存在安全隐患。

文档包含有关此可选参数的所有信息,以及在使用 shell 之前要阅读的安全注意事项。


推荐阅读