使用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文件