问题描述
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'}