关于这种行为有几个问题:
>>> import sys
>>> sys.stdout.write("aaaa")
aaaa4
>>>
我知道那里发生了什么。我不明白的是在我的例子中发生了什么:无论我打开哪个文件,每当我使用它的.write
方法时,数据的长度都会被写入控制台/tostdout
。在
但是,当我让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命令提示符(“normal”cmd
或“Anaconda提示符”)上使用的任何新python3.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)]'
>>>
我以前从未见过这种行为,看起来也不应该发生。原因是什么?我怎么解决?在
这似乎是这个问题的复制品:sys.stdout.write in python3 adds 11 at end of string
这解释了
.write()
返回写入文件后写入的字符数。这解释了为什么在解释器中看到它,而不是在创建的文件中看到它。在Edit:显示解释器的示例显示返回值,python可执行文件忽略它们。在
现在,如果我创建一个与我得到的内容完全相同的文件:
^{pr2}$这是因为
python
可执行文件不显示返回值,而解释器显示返回值。在相关问题 更多 >
编程相关推荐