3

我已经在我的 When I中定义了__str__and ,它工作得很好。 当然,将 stdout 重新定义为对象并调用会将字符串表示形式写入文件,但这是最 Pythonic 的方式吗?__repr__class foo
print foo()
fileprint foo()

4

3 回答 3

4

只需在对象上调用strrepr,如下所示:

with open('somefile.txt', 'w') as f:
    f.write(repr(foo()))
于 2013-10-12T03:18:45.637 回答
4
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 块短得多:

于 2013-10-12T03:19:09.377 回答
2

如果您使用的是 Python 2.7,您可以以这种方式临时将您的打印定向到标准输出:

>>> print >> open('test.txt', 'w'), 'test string'

如果您使用的是 Python 3.3,您可以以这种方式临时将您的打印定向到标准输出:

>>> print('test string', file=open('test.txt', 'w'))

这两种方法都允许您临时切换输出。

正如 deque starmap partial setattr 在下面指出的那样,在 Python 2.7 中,您还可以以这种方式临时将打印定向到标准输出:

>>> from __future__ import print_function
>>> print('test string', file=open('test.txt', 'w'))
于 2013-10-12T03:17:37.917 回答