python - 仅使用新信息将字典读取到文件覆盖
问题描述
我已将文本文件读入字典,使用函数在字典中添加/删除记录,然后将其写回文本文件。文本文件的格式如下:
First Name
2018-11-05 10:12:15
First string
Second string
Third string
Second Name
2014-01-02 14:21:11
First string
Second string
Third string
这是我的代码的一部分:
name = {'First Name':['2018-11-05 10:12:15','First string', 'Second String',
'Third String']} and so on
def addName(names):
print("Adding to name list")
while True:
answer = input("Enter name to add or <ENTER> to exit: ")
if answer == "":
print("Exiting Add Names")
break
elif answer in name:
print("Name already exist")
elif answer not in [name]:
new_name_info = str(input("Enter name info: "))
new_name_dict = {answer: [datetime.now().strftime("%Y-%m-%d %H:%M:%S"), new_plant_info]}
name.update(new_names_dict)
print("Add new name info successful.")
break
def Write_back_into_file(diction):
print("Writing it back and exiting")
with open("filename", "w") as file:
for key in diction.keys():
namess = list(name[key])
file.write(key + "\n" + "".join(namess) + "\n")
但是,不是将更新的字典写回文件,而是仅使用添加到字典中的新键覆盖整个文件。
我了解“w”模式的工作原理,但我打算在添加和删除记录后将更新的字典写入文件。
所以我不确定如何将更新的字典以原始格式写回文本文件。
解决方案
除了错别字之外,类似的东西应该可以工作:
def Write_back_into_file(diction):
print("Writing it back and exiting")
with open("filename", "w") as file:
for key in diction.keys():
file.write(key + "\n" + "\n".join(diction[key]) + "\n\n")
当然,您必须将字典“名称”传递给函数:
Write_back_into_file(name)
推荐阅读
- purescript - 如何使用 Spago 安装特定的软件包版本?
- android - 应用程序链接 - 应用程序无法从浏览器打开
- android - 设备所有者管理员 / DevicePolicyManager,可以在 Android 上自动打开移动数据和数据漫游吗?
- spring - SqlResultSetMapping 从 NamedNativeQuery 到 POJO 类抛出“找不到适当的构造函数”
- php - 已发布变量中的引号未在下一页显示回显
- list - 是否有一个函数,当 a 和 b 相乘时,结果 x 相同,并且 x 由用户给出
- javascript - bind-html-compile 缺乏适当的拆解
- api - 登录flutter后如何调用get请求?
- mstest - 如何在 github 操作中使用 mstest?
- python - 在python中将一列变成几行