Python - 如何删除文件的最后两行,追加行,然后替换我删除的那两行?

问题描述:

我正在开发Flask,并试图创建一个页面来创建页面(作为一种自定义的CMS)。因此,该页面需要为在app.py文件中调用时呈现页面模板的函数创建自己的@ app.route装饰器。我想到的是创建三个功能:remove_last_two_linescreate_rendering_funcadd_back_last_lines(以它们的名字命名)。 remove_last_two_lines函数和add_back_last_lines函数完全符合我的要求。我遇到的问题是create_rendering_func。它根本不会做任何事情,也不会产生错误。所以我认为代码是有效的(并且我传递了有效的参数),我只是不明白为什么它不起作用。被覆盖的行是空的(这就是为什么在函数的最后一行之后有多个换行符)。提前致谢!Python - 如何删除文件的最后两行,追加行,然后替换我删除的那两行?

def add_new_url(route, func_name, title, filename): 
    lines = open(__file__, 'r').readlines() 
    lines[-6] = '@app.route(\'%s\')' % route 
    lines[-5] = '\ndef %s' % func_name 
    lines[-4] = '\n\trender_template(\'filename\', the_title=%s)\n\n\n\n\n' % title 

(此方法吸。理解上更好的方法的任何提示)

+0

虽然重复回答你的问题,但你的方法没有多大意义。当程序已经运行时用新的源代码覆盖Python文件不会执行任何操作。此外,在开始处理请求后,您无法安全地修改Flask应用程序中的路由表。 – davidism

+0

@davidism那么有什么办法可以添加一个新的网址渲染功能? – RyJo

我会写的数据将被插入由换行字符(\n)所附字符串的列表,并通过切片其插入lines ;

insert_lines = ["Hello\n", "World!\n"] 
with open("my_text_file.txt") as myfile: 
    lines = myfile.readlines() 
    lines[-2:-2] = insert_lines 
    myfile.seek(0) 
    myfile.write(''.join(lines)) 

它需要整个文件读入内存,并写它,这可能是一个问题,如果你的文件是令人难以置信的大前在内存中创建一个新的文件,但它会插入“你好”和“世界”!在文件的倒数第二行之前。