一、使用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。