运行时修改其他.py文件的变量并持久化保存改动的实现方法
解决方案
你可以通过将修改后的snippet_list序列化为合法的Python代码,覆盖写入原snippets.py文件实现持久化保存,参考实现如下:
完整示例代码
import snippets def save_snippets_to_file(): # 构造合法的Python变量定义代码 code_content = "snippet_list = [\n" for item in snippets.snippet_list: # 自动选择适配的引号包裹元素,规避内部引号转义问题 if '"""' in item and "'''" not in item: quote = "'''" else: quote = '"""' code_content += f" {quote}\n" code_content += item.rstrip('\n') code_content += f"\n {quote},\n" code_content += "]" # 写入到磁盘文件 with open("snippets.py", "w", encoding="utf-8") as f: f.write(code_content) # 测试修改 snippets.snippet_list.append('''```lua function FuncC() -- do C things end ```''') # 调用保存方法持久化改动 save_snippets_to_file()
注意事项
- 上述基础实现仅适用于
snippets.py中仅包含snippet_list这一个变量定义的场景,如果文件中还有其他代码,你需要先读取原文件内容,通过正则匹配定位到snippet_list的定义区间,仅替换对应区间的内容即可,避免覆盖其他代码。 - 你原有示例中的遍历代码存在错误,正确写法应为
for snippet in snippets.snippet_list:,不能直接遍历导入的snippets模块。 - 如果列表元素中同时包含三重双引号
"""和三重单引号''',你需要提前对内容中的同类引号做转义处理,避免生成的Python代码语法错误。
内容的提问来源于stack exchange,提问作者Adrian Hernando Solanas
相关产品推荐
相关产品推荐

