我试图获取sys.stdout字符串中的内容。我尝试了明显的方法:
sys.stdout
def get_stdout(): import sys print('a') print('b') print('c') repr(sys.stdout) contents = "" #with open('some_file.txt','r') as f: #with open(sys.stdout) as f: for line in sys.stdout.readlines(): contents += line print(contents)
但这给出了错误:
Exception has occurred: UnsupportedOperation not readable
那么,如何更改已打开文件的权限?
我试过了:
sys.stdout.mode = 'r'
但这仍然会产生相同的错误…
其他可行的stdout方法是以硬件独立的方式获取名称/路径。
stdout
可以正常工作的另一件事是让我sys.stdout在字符串中运行主脚本后将内容放入。
如果您遇到像我这样的错误,这些可能是相关的:为什么__builtins__既是模块又是字典 python:__builtin__和__builtins__有什么区别?
错误:
line 37, in my_print __builtins__["print"](*args, file=f) # saves to file TypeError: 'module' object is not subscriptable
您可以使用以下代码:
import sys from builtins import print as builtin_print myfile = "output.txt" def print(*args): builtin_print(*args, file=sys.__stdout__) # prints to terminal with open(myfile, "a+") as f: builtin_print(*args, file=f) # saves in a file
这应该重新定义该print函数,以便将其打印到stdout文件中。然后,您可以从文件中读取。
print