仅将字典值写入文本文件

5 投票
3 回答
8283 浏览
提问于 2025-04-18 13:14

我想把字典里的值一行一行地写入文本文件。我可以用下面的代码把整个字典写进文件:

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

如果有人能帮我就太好了。另外,我想在写入文件的时候,跳过那些值为'Empty'的键。

3 个回答

0

你只需要把 log_disk.values() 转换成一个列表,然后就可以直接写出来了。

with open(filename) as openfile:
    json.dump(list(log_disk.values()), file)
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]
11

只需要遍历这些值就可以了:

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

撰写回答