You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python通过用户输入编辑文件(邮箱/手机号):代码问题排查求助

修复你的联系人编辑代码问题

咱们一步步来排查代码里的问题,然后给出能正常运行的修正版本:

代码里的关键问题梳理:

  • 文件名称不匹配:你要操作的目标文件是file.txt,但代码里打开的是address.txt,这会导致找不到文件或者修改错误的文件。
  • 未读取文件内容:re.sub()需要处理字符串类型的内容,但你直接把文件对象obj2传进去了,必须先读取文件里的文本内容才能进行替换。
  • 缺少正则模块导入:代码里用到了re.sub()做替换,但没导入re模块,运行时会直接报NameError。
  • Python版本语法问题:raw_input()是Python 2的输入语法,Python 3里要改用input(),否则会报错。
  • 文件资源未妥善管理:直接用open()打开文件后没有手动关闭,最好用with语句自动管理文件的打开和关闭,避免资源泄漏。

修正后的完整代码:

import re

def editContact():
    # 用with语句自动管理文件,无需手动关闭
    with open("file.txt", "r") as file_read:
        content = file_read.read()
    
    old_email = input("Enter old email address : ")
    new_email = input("Enter new email address : ")
    
    # 执行邮箱替换,这里可以优化为精确匹配避免误替换
    updated_content = re.sub(old_email, new_email, content)
    
    with open("file.txt", "w") as file_write:
        file_write.write(updated_content)
    
    print("邮箱地址已成功更新!")

# 调用函数执行编辑操作
editContact()

额外优化建议:

如果担心部分邮箱片段被误替换(比如旧邮箱是Jon@gmail,其他字符串刚好包含这个片段),可以用正则的单词边界确保只替换完整的邮箱,同时转义邮箱里的特殊正则字符:

updated_content = re.sub(r'\b' + re.escape(old_email) + r'\b', new_email, content)

另外还可以添加try-except块捕获文件不存在的异常,让代码更健壮。

内容的提问来源于stack exchange,提问作者deepak rawat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:56:28