即使列表为空,也强制json转储json对象

rco*_*rty 17 python json

我有一个列表,可能是空的或非空的.

我想创建一个新文件,其中包含该列表的格式是人类可读的,并且我的下一个脚本很容易解析.在列表非空的情况下,这工作正常,我的下一个脚本读入json文件.但是当列表为空时,我得到"ValueError:没有JSON对象可以被解码".这是有道理的,因为当我打开文件时,确实没有内容,因此没有JSON对象.

有些列表是空的,我很好.所以,要么我想写一个空的JSON对象,要么我希望我的阅读器脚本没有找到JSON对象.

这是相关的代码:

作家脚本

favColor = []   OR   favColor = ['blue']   OR favColor = ['blue', 'green']
fileName = 'favoriteColor.json'
outFile = open(fileName, 'w')
json.dump(outFile, favColor)
outFile.close()
Run Code Online (Sandbox Code Playgroud)

读者脚本

fileName = 'favoriteColor.json'
inFile = open(fileName, 'r')
colors = json.load(inFile)
inFile.close()
Run Code Online (Sandbox Code Playgroud)

任何帮助或建议非常感谢.如果我需要提供更多理由来说明我为什么这样做,我也可以提供这个,只是想我开始时只需要最少的理解问题.

Lan*_*aru 22

将您的阅读器脚本修改为:

with open('favoriteColor.json') as inFile:
    try: 
         colors = json.load(inFile)
    except ValueError: 
         colors = []
Run Code Online (Sandbox Code Playgroud)

这会尝试将文件加载为json.如果由于值错误而失败,我们知道这是因为json为空.因此,我们可以只为空列表指定颜色.最好使用"with"结构来加载文件,因为它会自动关闭它们.