将打印重定向到Python 3.5中的.txt文件

时间:2016-05-24 14:32:58

标签: python-3.x

简而言之,我想将打印重定向到Python 3.5中的.txt文件 我想用一个虚拟的例子来更好地解释这个问题:

parents= [1,2]
for i in parents:
    print("Parent #{}:".format(i))
    for j in range(3):
        print ('Child: ', j+1)

这将打印以下内容:

Parent #1:
Child:  1
Child:  2
Child:  3
Parent #2:
Child:  1
Child:  2
Child:  3

我希望能够将这一行直接写入文件中。 我知道如何从命令行执行此操作,但我更愿意将其包含在代码中。

2 个答案:

答案 0 :(得分:2)

您可以为file来电提供print()参数。请read the docs

with open('test.txt', 'w', encoding='utf-8') as f:
    print(123, True, 'blah', file=f)

默认filesys.stdout,可以更改:

import sys
sys.stdout = open('test.txt', 'w', encoding='utf-8')
print(123, True, 'blah')  # prints to test.txt

在后一种情况下,您可以使用sys.__stdout__访问原始标准输出文件。

而且,正如其他人指出的那样,您可以在文件对象上使用write()方法,但print()确实具有write()缺少的某些额外功能。

答案 1 :(得分:0)

f = open('file.txt', 'a')
parents= [1,2]
for i in parents:
    f.write("Parent #{}:".format(i) + '\n')
    for j in range(3):
        f.write('Child: ', j+1, '\n')
f.close()