我在__str__
中定义了__repr__
和class foo
当我print foo()
时,它运作得很好
当然,将stdout重新定义为file
对象并调用print foo()
会将字符串表示写入文件,但这是最pythonic的方式吗?
答案 0 :(得分:2)
如果您使用的是Python 2.7,则可以以这种方式暂时将打印输出到stdout:
>>> print >> open('test.txt', 'w'), 'test string'
如果您使用的是Python 3.3,则可以以这种方式暂时将打印输出到stdout:
>>> print('test string', file=open('test.txt', 'w'))
这两种方法都允许您临时切换输出。
正如deque starmap partial setattr在下面指出的那样,在Python 2.7中,你也可以用这种方式暂时将你的print打印到stdout:
>>> from __future__ import print_function
>>> print('test string', file=open('test.txt', 'w'))
答案 1 :(得分:2)
with open("Output.txt", "w") as outputFile:
print >>outputFile, foo()
Python文档建议使用with
,在本节http://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects
最好在处理文件时使用with关键字 对象。这样做的好处是文件在之后正确关闭 即使在途中出现异常,它的套件也会完成。它是 也比编写等效的try-finally块短得多:
答案 2 :(得分:1)