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
相关产品推荐
相关产品推荐

