簡體   English   中英

Python io.StringIO最后添加了額外的換行符

[英]Python io.StringIO adding extra newline at the end

當我調用它的getvalue方法時,Python的io.StringIO似乎在io.StringIO添加了一個額外的換行符。

對於以下代碼:

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

我用十六進制編輯器檢查了輸出,我確定還有一個額外的換行符。

文件說:

newline參數的工作方式與TextIOWrapper類似。 默認情況下,只考慮\\ n個字符作為行的結尾, 不進行換行 如果newline設置為None,則在所有平台上將換行符寫為\\ n,但在讀取時仍會執行通用換行解碼。

我不記得write方法每次調用附加換行符。

那么為什么要添加換行符呢? 我正在寫一個腳本,所以我想確保它的行為是一致的。

StringIO不是這樣做的,它是print

print打印所有參數,由sep分隔(默認為空格),以end ,默認為換行符。 你可以通過這樣做來抑制它:

print(res, end="")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM