python-3.x 如何将多个字典写入一个文件?

oxiaedzo  于 2023-02-26  发布在  Python
关注(0)|答案(2)|浏览(144)

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)
w8biq8rn

w8biq8rn1#

您的问题源于对open函数的mode参数的误解。我建议阅读Python文档的阅读and Writing Files部分,更具体地说,阅读open函数的文档
简而言之,"w"(write)选项会删除所有内容,因此您需要使用"a"(append)选项。

atmip9wb

atmip9wb2#

每次使用open函数和写入标志“w”打开文件时,有两个选项:如果文件不存在,则会创建一个新文件,或者现有文件将被截断,之前的内容将被清理以供新的写入操作使用。这不是Python特有的,而是操作系统的标准。
您的Fruit_shop dict实际上已写入文件,但在您第二次调用函数writing_to_file时,它会截断文件并仅使用Games_shop dict覆盖它。
如果要将内容附加到文件中,请使用append标志“a”而不是“w”。要了解更多信息,请查看fopen系统调用的man page,以获取所有可能的标志及其效果的列表。

相关问题