python执行终端命令(含交互情况)

一、使用os.system

import os
status_code = os.system('ls ~')
print(status_code )
  • 该方法会在console中打印命令输出内容,但不返回给变量。
  • 它仅返回执行状态码,执行成功为0,反之1。
  • 若需要sudo下输入密码,可使用如下方法:
import os
status_code = os.system('echo password | sudo -S ls')
print(status_code )

# sudo -S: 从标准输入读取sudo密码

二、使用os.popen

import os
res = os.popen("ls ~").read()
print(res) 
  • 该方法不会在console中打印输出内容,会将内容直接返回给变量。

三、使用subprocess

import subprocess

# 三种方式:

status_code = subprocess.call("ls", shell=True)      # 效果同os.system(cmd)

res = subprocess.getoutput('ls')                     # 效果同os.popen(cmd)

status_code, res = subprocess.getstatusoutput('ls')  # 返回status_code与res
  • subprocess的三种用法适用大部分场景。

四、使用Pexpect

import pexpect

# 想执行的指令
cmd = '7za x {}'.format('test.zip')

# 执行脚本
child = pexpect.spawn(cmd)   
         
# 如果返回内容遇到了password,则输入密码123456
child.expect('password')
child.sendline('123456')
child.expect('is Ok')

# 打印输出内容
print(child.before.decode())
  • 在遇到需要交互的指令时(如需要输入密码),可以使用Pexpect。

参考

python执行终端命令及自动密码输入_python输出cmd命令后,需要密码,怎么输入密码-CSDN博客

一文看懂python如何执行cmd命令_python执行cmd命令-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值