如何将Script1输入的姓名自动添加至Script2指定行的names列表?
当然可以实现!这里有两种实用方案供你选择
方案一:用外部文件存储姓名(推荐,安全可靠)
因为两个脚本是独立运行的,直接共享内存变量行不通,用外部文件做中间存储是最稳妥的方式:
- 修改Script1,让它把输入的姓名追加到文本文件中:
name = input('Please enter your name:') # 以追加模式打开存储文件,写入新姓名 with open('names_storage.txt', 'a', encoding='utf-8') as f: f.write(f"{name}\n") print(f"✅ 姓名 {name} 已成功添加!")
- 替换Script2的第13行代码,让它从存储文件读取姓名并生成列表:
# 初始化列表,保留你原有的'None'项 names = ['None'] try: # 读取存储文件中的所有姓名 with open('names_storage.txt', 'r', encoding='utf-8') as f: # 过滤空行并去除换行符 stored_names = [line.strip() for line in f if line.strip()] names.extend(stored_names) except FileNotFoundError: # 如果存储文件未创建(首次运行),使用你原来的默认姓名 names.extend(['Name1', 'Name2', 'Name3'])
这样每次运行Script2时,都会自动加载Script1添加的所有姓名,完全不用手动修改代码~
方案二:直接修改Script2的代码(不推荐,有风险)
如果你一定要直接把姓名写入Script2的names列表,可以让Script1定位到第13行修改代码,但要注意:如果Script2的代码格式发生变化(比如空格、引号类型),这个方法会失效,甚至可能损坏脚本。
修改后的Script1代码:
name = input('Please enter your name:') # 替换为你的Script2实际路径 script2_path = 'Script2.py' # 读取Script2的所有代码行 with open(script2_path, 'r', encoding='utf-8') as f: lines = f.readlines() # 注意:Python列表索引从0开始,第13行对应索引12 target_line_idx = 12 current_line = lines[target_line_idx].strip() # 解析当前的names列表内容 list_content = current_line.split('=', 1)[1].strip() # 拆分列表元素,去除引号和空格 elements = [elem.strip().strip("'") for elem in list_content.strip('[]').split(',')] # 添加新姓名(保留单引号格式) elements.append(f"'{name}'") # 重新组合成新的代码行 new_line = f"names = [{', '.join(elements)}]\n" # 替换原来的第13行 lines[target_line_idx] = new_line # 将修改后的代码写回Script2 with open(script2_path, 'w', encoding='utf-8') as f: f.writelines(lines) print(f"✅ 姓名 {name} 已成功写入Script2的names列表!")
优先推荐方案一,稳定性和可维护性都更强~
内容的提问来源于stack exchange,提问作者Pergamon256
相关产品推荐
相关产品推荐

