python执行终端命令(含交互情况)
一、使用os.system
import os
status_code = os.system('ls ~')
print(status_code )
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())
参考
python执行终端命令及自动密码输入_python输出cmd命令后,需要密码,怎么输入密码-CSDN博客
一文看懂python如何执行cmd命令_python执行cmd命令-CSDN博客
作者:Ziieq