我需要检查我的JSON文件是包含数据还是仅包含空数组。我是这样做的:
with open('example.json') as f:
data = json.load(f)
if not data:
do_my_stuff()
但我的JSON文件可能非常庞大,我不想全部加载它们 我可以通过其他方式检查文件是否只包含空数组吗?检查我的文件的权重是否为2个字节(不是la la?)?
答案 0 :(得分:0)
您必须使用os.path.getsize(path)
来查找文件的文件大小
您根本不必阅读文件
如果JSON文件只有2个字节,“[]”或“{}”,则它是一个空的JSON对象。
基于一些JSON使用原则,在这种特殊情况下,假设2字节长的JSON字符串是空字符串,数组或对象(“”,[],{})是明智和安全的。两位数字可能是有效的JSON字符串,但它不是JSON的用途(您可以使用JSON库加载单个值,就像您可以使用大型起重机来提升蛋)。
如果此[文件大小]不符合您的要求,您必须读取前2个字节并检查它们是否等于'[]':
with open(filename, 'rb') as file:
if file.read(2) != '[]':
file.seek(0) # it may be redundant but it does not hurt
json.load(file)