簡體   English   中英

避免文件末尾的換行符 - Python

[英]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.

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