enter image description here当我运行上面的代码时,只有游戏_shop字典被写入到something.txt中,而不是Fruit_shop中。你能告诉我应该在代码中做什么修改才能将Fruit_shop字典写入到文件中吗?请告诉我一个小小的理由。提前感谢!
def writing_to_file(shop) -> None:
file_name = "something" + '.txt'
with open('C:/Users/xyz/PycharmProjects/Shops/{0}'.format(file_name), 'w') as f:
for key, value in shop.items():
f.write(key + '\n')
for key1, value1 in value.items():
f.write(f"{key1} : {value1}\n")
f.write(f"{'}'}")
Fruit_shop = {
'Fruits {':{
'A':'Apple',
'B':'Ball'
}
}
Games_shop = {
'Games {':{
'C':'Cricket',
'F':'Football'
}
}
writing_to_file(Fruit_shop)
writing_to_file(Games_shop)
2条答案
按热度按时间w8biq8rn1#
您的问题源于对
open
函数的mode
参数的误解。我建议阅读Python文档的阅读and Writing Files部分,更具体地说,阅读open
函数的文档简而言之,
"w"
(write)选项会删除所有内容,因此您需要使用"a"
(append)选项。atmip9wb2#
每次使用
open
函数和写入标志“w”打开文件时,有两个选项:如果文件不存在,则会创建一个新文件,或者现有文件将被截断,之前的内容将被清理以供新的写入操作使用。这不是Python特有的,而是操作系统的标准。您的
Fruit_shop
dict实际上已写入文件,但在您第二次调用函数writing_to_file
时,它会截断文件并仅使用Games_shop
dict覆盖它。如果要将内容附加到文件中,请使用append标志“a”而不是“w”。要了解更多信息,请查看fopen系统调用的man page,以获取所有可能的标志及其效果的列表。