使用subprocess库,有以下三种写法
# 写法一:执行完后一次性输出所有日志到控制台
# 写法二:实时输出日志到控制台
# 写法三:输出日志到指定文件,需要将stdout赋值为文件
import subprocess
command = "your command"
process = subprocess.Popen(command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
# 写法一:执行完后一次性输出所有日志到控制台
log = process.communicate()
print(log[0].decode("gbk"))
# 写法二:实时输出日志
while process.poll() is None: # None表示正在执行中
out = process.stdout.readline().decode().strip()
if out != "":
print(out) # 实时输出日志
# 写法三:输出日志到指定文件,需要将stdout赋值为文件
singlelog = open("/opt/log.txt", 'a+')
# a 只读,a+ 读写,如无此文件,则会创建,追加写入。
# w 只读,w+ 读写,如无此文件,则会创建,覆盖写入
process = subprocess.Popen(command, shell=True, stdin=subprocess.PIPE, stdout=singlelog,
stderr=subprocess.PIPE)
singlelog.close() # 写完之后关闭log文件