【问题标题】:edit file using by taking user input in python?通过在python中获取用户输入来编辑文件?
【发布时间】:2018-09-29 14:20:57
【问题描述】:

我想通过接受用户输入来编辑电子邮件 ID 和电话号码,但我无法通过此代码帮助中的错误来做到这一点。

文件.txt

Jon Snow 996452544 Jon@gmail
Robb 885546694 Robb@gmail
Robert 896756885 Robert@gmail

代码

 def editContact():
    obj2 = open("address.txt","r")  
    output = []

    old_email=raw_input("Enter old email address : ")               
    new_email=raw_input("Enter new email address : ")
    s = re.sub(old_email, new_email, obj2)     

    obj1 = open("address.txt","w")
    obj1.writelines(s)

【问题讨论】:

  • 请更正您的缩进。
  • 缩进代码中没有问题正在工作 Traceback(最近一次调用最后一次):文件“./addressBookpy.py”,第 72 行,在 editContact() 文件“./addressBookpy.py” ,第 54 行,在 editContact s = re.sub(old_email, new_email, obj2) 文件“/usr/lib64/python2.6/re.py”,第 151 行,在 sub 返回 _compile(pattern, 0).sub(repl , string, count) TypeError: expected string or buffer 我得到这个错误
  • 缩进问题是试图阅读代码并回答你的问题。在您的问题中显示错误,而不是在评论中。
  • 你的错误是因为re.sub的第三个参数应该是字符串而不是文件对象。
  • 请注意,打开具有写入权限的文件会将文件截断为零字节,从而破坏现有数据。

标签: python python-2.7 file io


【解决方案1】:

我认为您遇到的问题是:

s = re.sub(old_email, new_email, obj2)

这里的obj2是一个文件obj,使用obj2.read()读取文件

然后你就可以替换了。

【讨论】:

    【解决方案2】:
    abc=obj2.read()
    s = re.sub(old_email, new_email, abc) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-23
      • 2014-06-05
      相关资源
      最近更新 更多