当我调用其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
方法在每次调用时都添加换行符。
那么为什么要添加换行符?我正在编写脚本,因此我想确保其行为是一致的。
答案 0 :(得分:3)
StringIO没有这样做,它是print
。
print
打印其所有参数,以sep
(默认为空格)分隔,以end
结尾,默认为换行符。您可以这样做:
print(res, end="")