如何解决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 对 this question 的回答。
解决方法
subprocess
没有在 shell 中运行您的命令,因此您的 *
没有得到扩展。您可以添加 shell=True
来实现这一点,但使用这样的 shell 存在安全隐患。
documentation 包含有关此可选参数的所有信息,以及在使用 shell 之前要读取的 security considerations。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。