问题背景:Mac,Python 3.6.6.class将Python输出重定向,设置为同步在idle打印以及写入文件。由于还需要打印在idle中输入的内容(n),我尝试用单独代码把n写入文件。
问题关键:我发现,如果在把n写入文件的代码之后还有print指令运行,文件最终显示的时候就没有写入的n(图一)。如果写入n的代码后面没有任何print指令则可以正常在文件中看到写入的n(图二)。当n不是输入的内容,换成普通字符串,后面跟有print时也是同样的问题(图三)。
提问希望:我比较希望保留重定向输出的功能的同时做到正常把输入的n写入文件,因为一个更大的程序需要同步输出和写文件,可以保留这个功能的话会比较方便。希望学习了解到问题原因和解决方法!
尝试过的方法:将eval改为float,没有解决问题。(应该也不是数值的问题?)
Python代码如下:
import sys
class Print_Write():
def __init__(self, filename):
self.terminal = sys.stdout
self.file = open(filename, 'w', encoding='utf-8')
def write(self, message):
self.terminal.write(message)
self.file.write(message)
self.flush()
def flush(self):
self.file.flush()
sys.stdout = Print_Write('s.txt')
n = eval(input('enter:'))
f = open('s.txt', 'w' , encoding = 'utf-8')
f.writelines('enter:'+ str(n)+'\n')
f.close()
print('arie')
非常感谢!
windows 系统,Python3.7.4, 文件输入没遇到问题
看看是不是文件没有找到或者文件没有权限造成的。