[英]Python: line termination while reading and writing files
我編寫了一個簡單的實用程序,可以從文件中刪除某些行。 它將文件讀入行列表(Python),並將它們寫為單個串聯字符串,並保留新行; 一些行被刪除,一些在該過程中被注釋; 變化的百分比可以忽略不計。 不知怎的,DIFF送給我一份大紅色塊之前 , 經過一個大的綠色塊。 肉眼可見,生成的文件看起來非常不錯。 我想到了拖尾空間或類似的東西之間的細微差別,但是真的有可能嗎? 如果我在每行中添加了不可見的內容,則每條紅線之后都會有相應的綠線。 還是我聚集。
UPD:
有人告訴我,行尾是確定的。 我的代碼的要點:
def check_file(path):
out_line = ""
with open(path, "r") as f_r:
for line in f_r.readlines():
drop_it, o_line = consume_line(line)
if drop_it:
pass
else:
out_line += o_line
with open(path, "w") as f_w:
f_w.write(out_line)
consume_line()
本質上按原樣返回其參數。 在某些不常見的情況下,可以計划將其丟棄,也可以不進行注釋/注釋。 在任何情況下,都無需手動擺弄行尾。
如果沒有刪除任何行,則沒有編輯器報告行總數的任何變化。 這些文件起源於Linux。
此代碼設置文件中第一個eol之后的所有行尾。 保留尾隨空間。
g_newline = ''
def current_nl(f):
global g_newline
if g_newline:
return g_newline
g_newline = f.newlines
if isinstance(g_newline, tuple):
print('!!! Something wrong. This is supposed to be the first eol in the file\n')
return '\n'
return g_newline
def check_file(path):
global g_newline
g_newline = ''
out_line = ""
with open(path, "r") as f_r:
for line in f_r.readlines():
drop_it, o_line = consume_line(line)
if drop_it:
pass
else:
out_line += o_line.rstrip('\n') + current_nl(f_r)
with open(path, "w") as f_w:
f_w.write(out_line)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.