我有一个列表,可能是空的或非空的.
我想创建一个新文件,其中包含该列表的格式是人类可读的,并且我的下一个脚本很容易解析.在列表非空的情况下,这工作正常,我的下一个脚本读入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"结构来加载文件,因为它会自动关闭它们.