如何用Python代码向其他Python文件插入指定名称?
解决方法
你的原代码存在几个问题:
if name == "John"末尾缺少冒号:- 打开文件用默认的只读模式,无法执行写入操作
- 直接调用
write会覆盖整个文件内容,而非修改目标行 - 未处理原文件已有内容,无法实现追加名字的效果
要实现将输入的名字插入到example.py的names变量中,可以按以下方式实现:
基础实现代码
name = input("what's your name? ") if name == "John": # 读取example.py的全部内容 with open('example.py', 'r') as f: lines = f.readlines() # 遍历并修改目标行 updated_lines = [] target_line_prefix = "names = " for line in lines: if line.strip().startswith(target_line_prefix): # 提取原有名字内容 original_name = line.strip().replace(target_line_prefix, "").strip('"') # 拼接新的行内容 new_line = f'{target_line_prefix}"{original_name}", "{name}"\n' updated_lines.append(new_line) else: updated_lines.append(line) # 将修改后的内容写回文件 with open('example.py', 'w') as f: f.writelines(updated_lines)
优化版(避免重复添加同名)
如果需要防止同一个名字被重复插入,可以调整处理逻辑:
name = input("what's your name? ") if name == "John": with open('example.py', 'r') as f: lines = f.readlines() updated_lines = [] target_line_prefix = "names = " for line in lines: if line.strip().startswith(target_line_prefix): # 解析现有名字列表 existing_names = line.strip().replace(target_line_prefix, "").strip('"').split('", "') # 仅当名字不存在时才添加 if name not in existing_names: existing_names.append(name) new_names_str = '", "'.join(existing_names) new_line = f'{target_line_prefix}"{new_names_str}"\n' updated_lines.append(new_line) else: updated_lines.append(line) else: updated_lines.append(line) with open('example.py', 'w') as f: f.writelines(updated_lines)
逻辑说明
- 先以只读模式读取文件所有行,保留原文件的其他内容
- 定位到以
names =开头的目标行,解析出已有的名字 - 按期望的格式拼接新的名字内容
- 以写入模式将修改后的所有行写回文件,确保原文件其他内容不受影响
内容的提问来源于stack exchange,提问作者salah arif
相关产品推荐
相关产品推荐

