使用Python执行cmd命令

使用 subprocess.Popen 模块

  • Popen 构建方法
subprocess.Popen(commands,
                 bufsize=0,
                 stdin=None, stdout=None,stderr=None,
                 shell=False,
                 cwd=None, env=None
                 universal_newlines=False)
  •  参数说明
commands命令字符串或字符串列表
bufsize
缓存区大小,默认 0 即无缓冲;
负值表示默认系统缓冲(一般是全缓冲);
stdin
stdout
stderr
子进程标准输入、标准输出、标准错误输出;默认 None 即继承父进程;
可选值包括:subprocess.PIPE(使用新管道),文件对象;
stderr 还有 subprocess.STDOUT(标准错误流输出到标准输出中)
shell
指定 commonds 是否在 shell 解释,默认False,但设置为 True 时,
unix 下相当于 commonds 前面添加了 "/bin/sh" "-c"
window 下相当于 commands 前添加了 “cmd.exe /c”
cwd设置工作目录
env
设置环境变量
universal_newlines当设置为 True 时,各种换行符都统一处理成 "\n"

 

  • Popen 使用示例 
import subprocess
 
# 子进程的标准输出默认为当前控制台
p = subprocess.Popen("ls", shell=True)  
p.wait()                                # 阻塞当前线程直到子进程 p 执行结束
 
 
 # 子进程的标准输出设置为管道对象
p = subprocess.Popen("ls", shell=True, stdout=subprocess.PIPE, universal_newlines=True) 
p.wait()
result_lines = p.stdout.readlines()   # 从子进程 p 的标准输出中读取所有行,并储存在一个list对象中
 
for line in result_lines:
    print(line.strip())

 

  • Popen 内置方法
popen.poll()检查子进程是否已经结束,返回 returncode 属性;
popen.wait()阻塞当前线程直到子进程执行结束,返回 returncode 属性;
popen.send_signal(signal)向子进程发送 signal 信号;
popen.terminate()停止子线程;
POSIX下发送 SIGTERM 信号,window 下调用 TerminateProcess() API
popen.kill()杀死子线程;
POSIX下发送 SIGKILL 信号,window 下调用 TerminateProcess() API
popen.stdin如果stdin 参数是PIPE,此属性就是一个文件对象,否则为None ;
popen.stdout如果stdout参数是PIPE,此属性就是一个文件对象,否则为None ;
popen.stderr如果stderr 参数是PIPE,此属性就是一个文件对象,否则为None ;
popen.pid子进程的进程号;
如果shell 参数为True,这属性指的是子shell的进程号。
popen.returncode子程序的返回值

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值