Python调用print打印变量正常但无法写入文件问题排查
问题排查可能原因
- 缓冲未正常落地:虽然
with语句块结束后会自动关闭文件并刷新缓冲,但如果代码在执行到最后一行json.dumps()时抛出未捕获的异常(比如toLog或self.orderBook中存在不可JSON序列化的对象),会导致程序提前终止,部分还在缓冲区的内容可能未写入磁盘。你可以在每个写入文件的print()语句后加file.flush()临时测试,如果写入正常即可确认是缓冲问题。 - 内容被特殊字符隐藏:若
toLog中存储的price或amount包含退格符、终端控制符等特殊字符,会导致你用普通文本编辑器打开文件时,前半部分内容被隐藏,看似没有写入。可以用二进制读取模式打开文件查看原始字节内容,确认toLog相关内容是否真的不存在。 - 文件路径混淆:如果代码里的
filename只写了mydoc.txt这类相对路径,文件会写入到程序运行时的当前工作目录,你可能误打开了其他目录下的旧文件,旧文件恰好只有orderBook相关内容。你可以打印os.path.abspath(filename)确认文件的实际存储路径,到对应路径下查看文件。 - 后续操作覆盖文件:确认当前代码之外是否有其他逻辑(比如同进程的其他代码、定时任务等)同时对同一个文件执行写入操作,若其他逻辑在本代码运行结束后又以覆盖模式
'w'打开文件,可能仅保留了后半部分内容。 - 基础语法错误排查:你给出的示例代码中
filename = mydoc.txt未给字符串加引号,该写法会直接抛出NameError导致程序无法运行,若实际代码也存在该类低级语法错误,先修正后再验证写入逻辑。
内容的提问来源于stack exchange,提问作者user1884295
相关产品推荐
相关产品推荐

