python3 subprocess module 的使用总结

  • subprocess.run()的使用
    首先肯定需要import啊
import subprocess

(如果没安装的话需要在命令行里输入pip install subprocess安装。)
我用的python版本是3.8.2,找到subprocess.run的函数声明如下:

def run(\*popenargs, input=None, capture_output=False, timeout=None, check=False, \*\*kwargs):

第一个参数是*popenargs,*号代表序列或tuple(即(a,b,c)形式的元组),所以我们应该这样使用:

cmdTuple =("cmd.exe", "/C", r"del d:\output\*.png") 
subprocess.run(cmdTuple)

这个例子是要删除d:\output\里的png图片,cmdTuple是有3个元素的元组,第一个元素是"cmd.exe",代表run()要启动的程序, 第二个元素“/C”是cmd.exe 的命令行参数,意思是“执行字符串指定的命令然后终止“,可能是说启动一个cmd,执行完命令后,就自动退出cmd.exe吧,第三个元素自然是要执行的cmd命令,必须要这样写,一开始我不知道需要传递元组,用下面错误的办法调用run:

cmd ="del d:\output\*.png"  
subprocess.run(cmd)

总是会报错,报的错误是

Traceback (most recent call last):   File "<stdin>", line 1, in <module>   File "D:\Program Files\Python38-2\lib\subprocess.py", line 489, in run
    with Popen(*popenargs, \*\*kwargs) as process:   File "D:\Program Files\Python38-2\lib\subprocess.py", line 854, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,   File "D:\Program Files\Python38-2\lib\subprocess.py", line 1307, in
_execute_c hild
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args, FileNotFoundError: [WinError 2] 系统找不到指定的文件。

  这个错误的原因就是cmd 里没写cmd.exe,subprocess.run是要启动一个exe的,如果没写cmd.exe当然找不到指定的文件了
  用subprocess.run的好处是cmd输出会直接输出到当前cmd窗口,就跟os.system()效果一样,比os.system好用的地方是支持反斜杠的路径如 d:/output/*.png,os.system遇到这样的路径可能识别不了,反正用subprocess.run都能识别。

参考博客:1.关于python函数参数中的*和**的介绍
     2.subprocess的中文介绍网站
     3.关于系统找不到指定的文件错误的解释

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值