[英]Avoid a Newline at End of File - Python
我想避免在python的文本文件末尾寫一個換行符。 這是一個我有很多問題,我相信很容易修復。 這是一個例子:
fileout = open('out.txt', 'w')
list = ['a', 'b', 'c', 'd']
for i in list:
fileout.write('%s\n' % (i))
這會在文件末尾打印\\ n字符。 如何修改我的循環以避免這種情況?
fileout = open('out.txt', 'w')
list = ['a', 'b', 'c', 'd']
fileout.write('\n'.join(list))
這是一個避免創建中間字符串的解決方案,這在列表大小很大時會很有用。 它不是擔心文件末尾的換行符,而是將換行符放在要打印的行之前 ,除了第一行,它在for循環之外處理。
fileout = open('out.txt', 'w')
mylist = ['a', 'b', 'c', 'd']
listiter = iter(mylist)
for first in listiter:
fileout.write(first)
for i in listiter:
fileout.write('\n')
fileout.write(i)
在我看來,文本文件由文本行組成。 行以換行序列終止,其具體細節是特定於平台的。 因此,正確的文本文件必須始終每行包含1個換行序列。
無論如何,您可以通過以不同方式處理最后一行,或者在內存中構建整個文件並將其寫為二進制數據來解決這個問題,注意省略最后的一個或兩個字節,具體取決於您的平台的換行順序。格式。
如果你有很長的列表,你不想用join()
轉換成一個字符串,那么好的舊標志變量就會來救援:
is_first_line = True
for s in my_list:
if is_first_line:
# see, no write() in this branch
is_first_line = False
else:
# we've just written a line; add a newline
output.write('\n')
output.write(s)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.