将类实例的字符串表示写入文件

时间:2013-10-12 03:12:35

标签: python class file-io

我在__str__中定义了__repr__class foo 当我print foo()时,它运作得很好 当然,将stdout重新定义为file对象并调用print foo()会将字符串表示写入文件,但这是最pythonic的方式吗?

3 个答案:

答案 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)

只需在对象上调用strrepr,就像这样:

with open('somefile.txt', 'w') as f:
    f.write(repr(foo()))