Skip to main content
 首页 » 编程设计

Python 3 解释器在每次写入时将长度打印到标准输入

2025年05月04日24lidabo

<分区>

关于这种行为有几个问题:

>>> import sys 
>>> sys.stdout.write("aaaa") 
aaaa4 
>>> 

我明白那里发生了什么。我不明白的是我的情况发生了什么:无论我打开哪个文件,每当我使用它的 .write 方法时,数据的长度都会写入控制台/到 标准输出。

>>> with open("garbage.file", "wb") as f: 
...     for x in range(4): 
...         f.write(b"xyz") 
... 
3 
3 
3 
3 
>>> with open("garbage.file", "rb") as f: 
...     assert f.read() == b"xyzxyzxyzxyz" 
... 
>>> 

但是,当我让 python 将它作为脚本运行时,这种行为不会发生:

D:\>type CON > test.py 
with open("garbage.file", "wb") as f: 
    f.write(b"xyz") 
 
^Z 
 
D:\>python test.py 
 
D:\>type garbage.file 
xyz 
D:\> 

在 Windows 命令提示符(“正常”cmd 或“Anaconda 提示符”)上使用的任何新的 Python 3.5 解释器都会发生这种情况。

>>> import sys 
>>> sys.version 
'3.5.2 |Anaconda 4.1.1 (64-bit)| (default, Jul  5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)]' 
>>> 

我以前从未见过这种行为,而且看起来也不应该发生。可能是什么原因?我该如何解决?