Python将终端输出写入文件然后读取文件

时间:2017-11-19 12:13:25

标签: python file

我在将终端输出(所有打印语句)写入文本文件然后在同一脚本中读取该文本文件时遇到问题。如果我关闭程序以完成对文件的写入然后重新打开文件以读取它,或者没有输出最终打印(file_contents)语句,我会一直收到I / O错误。

这是我的代码:

import sys

filename = open("/Users/xxx/documents/python/dump.txt", 'r+')

filename.truncate()

sys.stdout = filename

print('Hello')

print('Testing')

filename.close()

with open("/Users/xxx/documents/python/dump.txt") as file:
    data = file.read()
    print(file)

任何建议都会很棒!我打算用它来将输出从一些较长的脚本打印到一个松弛的通道。

谢谢!

3 个答案:

答案 0 :(得分:0)

你得到的错误是:
IOError: [Errno 2] No such file or directory: '/Users/xxx/documents/python/dump.txt'因为: 文件打开模式r+不会创建文件。使用模式w,如下所示:

您必须重新连接stdout再次控制台才能在控制台中打印。

import sys

filename = open('/Users/xxx/documents/python/dump.txt', 'w')

# filename.truncate()  # mode 'w' truncates file

sys.stdout = filename

print('Hello')

print('Testing')

filename.close()

# reattach stdout to console
sys.stdout = sys.__stdout__

with open('/Users/xxx/documents/python/dump.txt') as file:
    data = file.read()
    print(data)

将打印:

Hello  
Testing

答案 1 :(得分:0)

问题是您将sys.stdout重定向到filename,然后关闭该文件。之后,由于文件已关闭,您无法再打印任何内容。

sys.stdout = filename
..
..
filename.close()

with open("/Users/xxx/documents/python/dump.txt") as file:
    data = file.read()
    print(file)

最后一个print语句尝试打印输出到 sys.stdout ,这是一个已关闭的文件。

如果您想恢复旧行为,则需要保留对sys.stdout的引用。这将解决它:

sys_out = sys.stdout
sys.stdout = filename
..
..
filename.close()

sys.stdout = sys_out

with open("/Users/xxx/documents/python/dump.txt") as file:
    data = file.read()
    print(file)

答案 2 :(得分:0)

导入sys

filename = open(“/ Users / xxx / documents / python / dump.txt”,“w”)

sys_out = sys.stdout sys.stdout = filename

打印( '你好')

打印( '试验')

打印( '试验')

filename.close()

sys.stdout = sys_out

以open(“/ Users / xxx / documents / python / dump.txt”,“r”)作为文件:     data = file.read()     打印(数据)