Python io.StringIO在末尾添加额外的换行符

时间:2019-07-18 12:07:58

标签: python

当我调用其io.StringIO方法时,Python的getvalue似乎在末尾添加了额外的换行符。

对于以下代码:

import io
s = io.StringIO()
s.write("1\n2\n3\n4\n5\n")
res = s.getvalue()
s.close()
print(res)

这是我得到的,最后还有一个换行符:

1
2
3
4
5

我用十六进制编辑器检查了输出,并且确定还有多余的换行符。

document说:

  

newline参数的工作方式类似于TextIOWrapper。默认设置是仅将\ n个字符视为行尾,并且不进行换行翻译。如果将换行符设置为“无”,则换行符在所有平台上均写入\ n,但是在读取时仍会执行通用换行符解码。

而且我不记得write方法在每次调用时都添加换行符。

那么为什么要添加换行符?我正在编写脚本,因此我想确保其行为是一致的。

1 个答案:

答案 0 :(得分:3)

StringIO没有这样做,它是print

print打印其所有参数,以sep(默认为空格)分隔,以end结尾,默认为换行符。您可以这样做:

print(res, end="")