Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我编写了一个 python 脚本,其中有几个print语句。打印出来的信息可以帮助我监控脚本的进度。但是,当我将包含 的 bash 脚本 qsubpython my_script &> output到计算节点上时,即使脚本正在运行并打印某些内容,输出文件也不包含任何内容。输出文件将包含脚本完成后的输出。那么如何在脚本运行时通过输出文件实时获取输出。
print
python my_script &> output
实际上写入文件而不是在每次写入后或每次写入调用后进行管道和刷新,sys.stdout.flush()但您最好使用记录器功能并用日志替换打印。
sys.stdout.flush()
来自评论:记录器函数是您调用而不是 print 的函数,它将输出到某个地方的文本,可能带有时间戳和其他信息,它们通常允许您将各种数量的信息输出到各种目的地,包括标准输出和文件。有关内置日志功能的 python 的信息,请参阅 python 2或3文档。
有时我喜欢将数据写入 sys.stderr 来完成这类事情。它消除了冲洗这么多的需要。但是,如果您有时会为管道生成输出,那么使用 sys.stdout 会更好。