将仅字典值写入文本文件

5

我想把字典值逐行写入文本文件中。我可以使用以下代码将整个字典写入文件:

log_disk={}
log=open('log.txt','w')
log.write(str(log_disk))
log.close()

感谢您的求助。此外,我希望在写入文件时避免使用值为“Empty”的关键字。

3个回答

11

只需要循环遍历值:

with open('log.txt','w') as log:
    for value in log_disk.values():
        log.write('{}\n'.format(value))

如何将存储为列表的值进一步拆分为新行? - user3787457
1
如果您的值本身是列表,则需要循环遍历每个值。for value in log_disk.values():for elem in value:log.write('{}\n'.format(elem)) - Martijn Pieters

0

将数据写成未格式化的JSON字符串

您可以将数据转储为JSON,而不格式化JSON数据,它将写在一行上。

不要忘记附加换行符:

>>> import json
>>> data = {}
>>> with open(fname, "a") as f:
...     json.dump(data, f)
...     f.write("\n")
...

尝试使用其他数据:

>>> data = {"a": "aha", "b": "bebe"}
>>> with open(fname, "a") as f:
...     json.dump(data, f)
...     f.write("\n")
...

它不一定要是字典,列表也可以使用:

>>> data = range(10)
>>> data
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> with open(fname, "a") as f:
...     json.dump(data, f)
...     f.write("\n")
...

逐行读取数据

>>> with open(fname) as f:
...     for line in f:
...         print json.loads(line)
...
{}
{u'a': u'aha', u'b': u'bebe'}
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

0

你只需要将log_disk.values()转换为列表,就可以直接写入它们了

with open(filename) as openfile:
    json.dump(list(log_disk.values()), file)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接