删除地址簿中的条目
Delete an entry in a addressBook
我正在尝试开发 python 通讯录,但无法 删除 联系人。
我的地址文件在每一行中都有一个联系方式,格式为:姓氏;first_name;phone_number。
要删除联系人,我会验证联系人是否存在,如果存在,我将创建一个包含所有条目的新文件,但要删除的条目除外,但条件 if line != line_to_delete:
不起作用。
我已经尝试过 readlines()
,但问题仍然存在。 .
代码:
def delete_contact(self):
line_to_delete=self.surname+";"+self.first_name+";"+self.phone_number
name="Address_Book"
try:
new_file=open(name, 'a')
with open('addressBook') as old_file:
for line in old_file:
if line != line_to_delete:
new_file.write(line)
new_file.close()
old_file.close()
os.remove("addressBook")
os.rename("Address_Book", "addressBook")
return True
except Exception:
print("It's not possible to read the file")
为了进行比较,您需要从读取行的末尾去除换行符:
with open('addressBook') as old_file:
for line in old_file:
if line.rstrip() != line_to_delete:
new_file.write(line)
jrennie已经给出了答案:
说明:返回的行末尾有“\n”。
所以如果没有 .rstrip() 你正在比较(只是一个例子):
"Martin";"Prince";"44" (line_to_delete) == "Martin";"Prince";"44" + "\n" ( for循环中的行)
我正在尝试开发 python 通讯录,但无法 删除 联系人。
我的地址文件在每一行中都有一个联系方式,格式为:姓氏;first_name;phone_number。
要删除联系人,我会验证联系人是否存在,如果存在,我将创建一个包含所有条目的新文件,但要删除的条目除外,但条件 if line != line_to_delete:
不起作用。
我已经尝试过 readlines()
,但问题仍然存在。 .
代码:
def delete_contact(self):
line_to_delete=self.surname+";"+self.first_name+";"+self.phone_number
name="Address_Book"
try:
new_file=open(name, 'a')
with open('addressBook') as old_file:
for line in old_file:
if line != line_to_delete:
new_file.write(line)
new_file.close()
old_file.close()
os.remove("addressBook")
os.rename("Address_Book", "addressBook")
return True
except Exception:
print("It's not possible to read the file")
为了进行比较,您需要从读取行的末尾去除换行符:
with open('addressBook') as old_file:
for line in old_file:
if line.rstrip() != line_to_delete:
new_file.write(line)
jrennie已经给出了答案:
说明:返回的行末尾有“\n”。 所以如果没有 .rstrip() 你正在比较(只是一个例子):
"Martin";"Prince";"44" (line_to_delete) == "Martin";"Prince";"44" + "\n" ( for循环中的行)