从文件中保存和读取 kwargs

问题描述

我知道如何将 kwargs 保存在 .txt 文件中。

with open(filename,"w") as file:
    for key,value in kwargs.items():
        file.write("{}: {}\n".format(key,value))

让我们说kwargs = {'page': 1,'name': 'xyz','title': 'xyz'}

但是如何读取文件并将数据保存回 kwargs,以便在读取文件后结果为 kwargs = {'page': 1,'title': 'xyz'}

解决方法

如果您愿意以稍微不同的格式保存它,您可以使用内置的 eval 函数。

将字典写入文件:

with open(filename,"w") as file:
    file.write(str(kwargs))

从文件中读回你的字典:

with open(filename,"r") as file:
    kwargs = eval(file.read())
,

假设您不担心歧义,这将与您在问题中提出的相反:

with open(filename,"r") as file:
    kwargs = {}
    for ln in file:
       key,_,value = ln.partition(': ')
       if value.isdigit():
           value = int(value)
       kwargs[key] = value
,

所以这里是解决这个问题的简单方法,在我们开始讨论歧义之前,它只是为了展示如何提取保存在文件中的内容。它将是一个键/值对,键和对都是字符串。将值部分转换为正确的类型不是解决方案的范围

test.txt 内容:

foo: bar
bas: buz

代码示例:

result = {}

with open("/home/mr/test.txt","r+") as f:
    for line in f.readlines():
        k,v = line.replace('\n','').split(':')
        result.update({k.strip(): v.strip()})

结果字典的内容:

{'foo': 'bar','bas': 'buz'}