Python - 如何删除文件的最后两行,追加行,然后替换我删除的那两行?
问题描述:
我正在开发Flask,并试图创建一个页面来创建页面(作为一种自定义的CMS)。因此,该页面需要为在app.py文件中调用时呈现页面模板的函数创建自己的@ app.route装饰器。我想到的是创建三个功能:remove_last_two_lines
和create_rendering_func
和add_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
(此方法吸。理解上更好的方法的任何提示)
答
我会写的数据将被插入由换行字符(\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))
它需要整个文件读入内存,并写它,这可能是一个问题,如果你的文件是令人难以置信的大前在内存中创建一个新的文件,但它会插入“你好”和“世界”!在文件的倒数第二行之前。
虽然重复回答你的问题,但你的方法没有多大意义。当程序已经运行时用新的源代码覆盖Python文件不会执行任何操作。此外,在开始处理请求后,您无法安全地修改Flask应用程序中的路由表。 – davidism
@davidism那么有什么办法可以添加一个新的网址渲染功能? – RyJo