我想要一个函数,它接受一个文件的路径,检查文件是否以\n
结尾,如果不是,则添加\n
。Python确保文件以行返回结束?
我知道我可以通过打开文件两次,一次是读取模式,然后是再次追加模式来做到这一点,但我觉得我必须错过一些东西......例如,我觉得像'w+'
模式必须能够做到。
下面是一个打开文件两次的方法(我希望简单一些,只打开一次)。
def ensureFileEndsWith(path, end):
with open(path) as f:
f.seek(-1, 2)
alreadyGood = f.read(1) == end
if not alreadyGood:
with open(path, 'a') as f:
f.write(end)
我想做同样的事情,但只打开一次文件。我尝试这样做:
def ensureFileEndsWith(path, end):
with open(path, 'w+') as f:
f.seek(-1, 2)
if not f.read(1) == end:
f.write(end)
但它打印出此异常:
IOError: [Errno 22] Invalid argument
关于在'w+'
模式打开的文件我的seek
使用。
从2.7 docs - '''(注意'w +'截断文件)'''。 – wwii
@wwii:呃 - 那很糟糕。我的整个文件现在都消失了。这只是一个日志文件,我不认为我有什么重要的东西,但现在它是空的。 – ArtOfWarfare
在做任何可能弄乱文件的事情之前,请务必进行备份! :) – Cyphase