从运行Python脚本的批处理文件读取输出

时间:2018-07-04 22:31:16

标签: python

我有一个运行Python脚本的批处理文件。该脚本模拟每5秒一次打印3行的数据。下面是我的简单代码。

while True:
    print("Some Data")
    print("More Data")
    print("Some More Data")

    time.sleep(5)

因此,在运行批处理文件时,每5秒以cmd打印这3行。有没有办法让我每5秒将这些日志记录到一个.txt文件中?

1 个答案:

答案 0 :(得分:0)

  

我是否可以每5秒将这些日志记录到一个.txt文件中?

是的。实际上,有两种半。


首先,您可以修改Python脚本以写入文本文件而不是stdout:

with open('logfile.txt', 'w') as f:
    while True:
        print("Some Data", file=f)
        print("More Data", file=f)
        print("Some More Data", file=f)

        time.sleep(5)

或者,如果您希望能够传递一个文件名而不是对logfile.txt进行硬编码:

import sys

filnename = sys.argv[1]
with open(filename, 'w') as f:
    while True:
        print("Some Data", file=f)
        print("More Data", file=f)
        print("Some More Data", file=f)

        time.sleep(5)

现在您的批处理文件将执行此操作:

py myscript.py logfile.txt

当然,在这两种情况下,您都不必对file=使用print参数;如果您需要对文件进行更多控制,则可以直接使用f.write("Some Data\n"),也可以使用the logging module神奇地进行更高级的日志记录(例如,使用自动时间戳记)。


或者,您可以不使用Python脚本,而是修改批处理文件以使用shell redirection

py myscript.py >logfile.txt