jh3*_*314 15
您可以将其添加到脚本中:
import sys
sys.stdout = open('logfile', 'w')
Run Code Online (Sandbox Code Playgroud)
这将使print语句写入logfile
.
如果您想要打印到stdout
文件和文件,您可以尝试这样做:
class Tee(object):
def __init__(self, *files):
self.files = files
def write(self, obj):
for f in self.files:
f.write(obj)
f = open('logfile', 'w')
backup = sys.stdout
sys.stdout = Tee(sys.stdout, f)
print "hello world" # this should appear in stdout and in file
Run Code Online (Sandbox Code Playgroud)
要恢复到只打印到控制台,只需恢复"备份"
sys.stdout = backup
Run Code Online (Sandbox Code Playgroud)
Rob*_*obᵩ 10
这是一个执行您所描述的程序:
#! /usr/bin/python3
class Tee:
def write(self, *args, **kwargs):
self.out1.write(*args, **kwargs)
self.out2.write(*args, **kwargs)
def __init__(self, out1, out2):
self.out1 = out1
self.out2 = out2
import sys
sys.stdout = Tee(open("/tmp/log.txt", "w"), sys.stdout)
print("hello")
Run Code Online (Sandbox Code Playgroud)
当尝试 python 3.7 上接受的最佳答案时,我遇到了以下异常:
Exception ignored in: <__main__.Logger object at 0x7f04083760f0>
AttributeError: 'Logger' object has no attribute 'flush'
Run Code Online (Sandbox Code Playgroud)
我添加了以下函数以使其工作:
def flush(self):
pass
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9888 次 |
最近记录: |