unix 如何运行Python子进程命令并在输出前加上时间戳?

niknxzdl  于 5个月前  发布在  Unix
关注(0)|答案(1)|浏览(82)

我有一个Python脚本,它在Unix机器上运行一些子进程命令。
第一个月
最后看起来像是
subprocess.Popen(['docker', 'build', '.'])
我想在任意命令的每一行输出前添加一个时间戳。
但是,这似乎不适用于子流程。有更好方法吗?

zy1mlcev

zy1mlcev1#

您可以使用pexpect为每行输出添加时间戳(或执行日志记录可以执行的任何操作):

#! /usr/bin/env python
import logging
import pexpect

logging.basicConfig(filename='ts.log', encoding='utf-8', format='%(asctime)s %(levelname)-8s %(message)s', level=logging.DEBUG)

def run(cmd):
    logging.info(cmd)
    p = pexpect.spawn(cmd, encoding="utf-8")
    while l := p.readline():
        logging.info(l.strip())

run("ls -l")

字符串

相关问题