Python:subprocess.run([";rm";,";*.jpg";])未运行

Python:subprocess.run([";rm";,";*.jpg";])未运行,python,linux,raspberry-pi,subprocess,rm,Python,Linux,Raspberry Pi,Subprocess,Rm,我正在制作一个脚本,从一个网站上收集一些图片并显示它们。基本上,这是一个智能的相框程序,它与一个每天都有图片更改的网站保持同步。 我无法让Python的subprocess.run方法运行简单的rm*.jpg: subprocess.run(["rm", "-fv", "*.jpg"]) 我也试过: 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对的回答。

子流程
没有在shell中运行您的命令,因此您的
*
没有得到扩展。您可以添加
shell=True
来实现这一点,但这样使用shell会带来安全隐患

包含有关此可选参数的所有信息,以及在使用shell之前要读取的