valueError:在处理json文件时对关闭的文件进行I/O操作


import json
class file:
def __init__(self,filename='c.json'):
with open(filename,'r') as f:
self.file_data = json.load(f)
def __repr__(self):
return f"{self.file_data}"
class crud(file):
def __init__(self,filename='c.json'):
with open(filename, 'w') as f:
self.file = f
#adding data
def add(self,data):
json.dump(data,self.file,indent=4)
temp = self.file_data["contacts"]
temp.append(data)

d = {"name": None, "phone": None, "email": None}
f =crud()
f.add(d)

with是python中的上下文管理器。它确保检查要打开的文件请求是否存在,如果存在,则运行下一个代码块/代码段。这部分代码完成后,上下文管理器关闭与文件的连接。

在您的情况下,将您的代码更改为以下

import os
class crud(file):
def __init__(self,filename='c.json'):
if os.path.isfile(filename):
self.file = open(filename, 'w')

否则,在"crud.add"方法的第temp = self.file_data["contacts"]行,python解释器将导致错误,因为打开的文件在with上下文完成后立即关闭。

最新更新