我想指定一个raw_input命令来删除txt文件的最后一行,同时附加txt文件。
简单代码:
newdd = function toObject(arr) {
var a =[];
for (var i = 0; i < arr.length; ++i) {
var rv = {};
rv["data"] = arr[i];
a.push(rv);
}
return a;
}
答案 0 :(得分:1)
您无法以追加模式打开文件并从中读取/修改文件中的前一行。你必须做这样的事情:
import os
def peek(f):
off = f.tell()
byte = f.read(1)
f.seek(off, os.SEEK_SET)
return byte
with open("database.txt", "r+") as DB:
# Go to the end of file.
DB.seek(0, 2)
while True:
action = raw_input("Data > ")
if action == "undo":
# Skip over the very last "\n" because it's the end of the last action.
DB.seek(-2, os.SEEK_END)
# Go backwards through the file to find the last "\n".
while peek(DB) != "\n":
DB.seek(-1, os.SEEK_CUR)
# Remove the last entry from the store.
DB.seek(1, os.SEEK_CUR)
DB.truncate()
else:
# Add the action as a new entry.
DB.write(action + "\n")
编辑:感谢Steve Jessop建议对文件进行向后搜索,而不是存储文件状态并将其序列化。
如果您正在运行多个此进程,则应注意此代码非常 racy(因为在向后搜索时写入文件会破坏文件)。但是,应该注意的是,你无法真正解决这个问题(因为删除文件中最后一行的行为是一件非常有趣的事情)。