修改字典文件
已有字典文件 Dictionary_phonebook.py 如下:people = {
'Alice': {
'phone': '2431',
'addr': 'Foo drive 23'
},
'Beth': {
'phone': '9102',
'addr': 'Bar street 42'
},
'Cecil': {
'phone': '3158',
'addr': 'Baz avenue 90'
}
}
我希望写一段代码用来更新Dctionary_phonebook.py文件(而不是生成新的文件来覆盖它)。例如,当加入新的人名时,我希望删除最后一行的 "}", 然后写入新内容。但是以下代码会报错:
fpeople = open('Dictionary_phonebook.py', 'a')
fpeople.seek(-1, 1)
fpeople.close()
报错信息如下:
Traceback (most recent call last):
File "D:\PycharmProjects\Phonebook_related\phonebook_update.py", line 25, in <module>
fpeople.seek(-1, 1)
io.UnsupportedOperation: can't do nonzero cur-relative seeks
这段报错信息的含义是什么?怎样实现上述修改文件的功能? 注意,当 offset 值非 0 时,Python 要求文件必须要以二进制格式打开,否则会抛出 io.UnsupportedOperation 错误 保存数据不必用编辑py文件的方式来保持,即麻烦又不可靠,可以了解一下pickle或者json库,都可以保存、加载py中的列表、字典等对象。
这样可以实现,不过前提是 } 属于读取的字典最后一个字符,不能有多余的字符:
fpeople = open('Dictionary_phonebook.py', 'a')
lenght = fpeople.tell()
fpeople.seek(lenght-1)
fpeople.truncate()
data = ''',
'Fishc': {
'phone': '3158',
'addr': 'Baz avenue 90'
}
}'''
fpeople.write(data)
fpeople.close()
另外像楼上说所,建议还是使用 pickle 之类的库比较友好方便
页:
[1]