一個簡單的解決方案是要覆蓋而不是就地修改它的整個文件:
with open("file.txt") as input:
# Read non-empty lines from input file
lines = [line for line in input if line.strip()]
with open("file.txt", "w") as output:
for line in lines:
output.write(line)
output.write("orange\n")
此代碼將罰款,只要工作該文件不是太大。
您可以通過打開文件進行讀寫操作,在文件末尾找到換行符的數量,尋找位於第一個尾隨換行符後面的位置,然後寫入要追加的行。這樣更高效,但也需要更詳細的代碼,所以如果簡單的解決方案不夠快,我只會這樣做。
編輯:這是我拿上這樣做的更有效的方法:
with open("file.txt", "r+U") as f:
try:
f.seek(-1, 2)
while f.read(1) == "\n":
f.seek(-2, 1) # go back two characters, since
# reading advances by one character
except IOError: # seek failed, so the file consists
f.seek(0) # exclusively of newline characters
else:
f.write("\n") # Add exactly one newline character
f.write("orange\n") # Add a new line
這可以正確處理任意數量的尾隨換行字符,包括沒有比兩家都以上。
如果您追加到此文件,空行如何到達那裏? –
邁克爾是正確的 - 處理新生產線最簡單的方法就是不要寫下來。 – abought
@Michael:它的配置文件,有時你會手動編輯,並且由於錯誤而留下一兩個空行。其實它使用我的多個用戶,並將編輯它。無論如何,這只是我的好奇心,我怎麼能做到這一點.. – vipulb