我想将Json文件数据放入各个变量中。所以我可以把这些变量用于其他事情。我能够从其他QDialog的输入创建Json文件。下一步是从Json文件中获取输入,并将其插入到各个变量中。 所以json:Line1转换为self.line1Config,依此类推
self.jsonfile = str(self.tn+'.json')
def WriteJSON(self):
self.NewConfigJSON = {}
self.NewConfigJSON['configs'] = []
self.NewConfigJSON['configs'].append({
'Line1': str(self.CreatNewJsonW.Line1),
'Line2': str(self.CreatNewJsonW.Line2),
'Line3': str(self.CreatNewJsonW.Line3)
})
jsonString = json.dumps(self.NewConfigJSON)
jsonFile = open(self.jsonfile, 'w')
jsonFile.write(jsonString)
jsonFile.close()
使用下面的代码,它将无法工作:
def CheckIfJsonFileIsAlreadyThere(self):
try:
if os.path.isfile(self.jsonfile) == True:
data = json.loads(self.jsonfile)
for daten in data:
self.line1Config = daten['Line1']
self.line2Config = daten['Line2']
self.line3Config = daten['Line3']
else:
raise Exception
except Exception:
self.label_ShowUserText("There are no configuration yet. Please create some
configuartions")
self.label_ShowUserText.setStyleSheet("color: black; font: 12pt \"Arial\";")
错误代码:
Traceback (most recent call last):
File "c:\path", line 90, in CheckIfJsonFileIsAlreadyThere
data = json.loads(self.jsonfile)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1776.0_x64__qbz5n2kfra8p0\lib\json\__init__.py", line 346, in loads
return _default_decoder.decode(s)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1776.0_x64__qbz5n2kfra8p0\lib\json\decoder.py", line 340, in decode
raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 11 (char 10)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "c:\path", line 38, in <module>
MainWindow = mainwindow()
File "path", line 21, in __init__
self.d = Generator_Dialog(self)
File "c:\path", line 55, in __init__
self.CheckIfJsonFileIsAlreadyThere()
File "c:path", line 100, in CheckIfJsonFileIsAlreadyThere
self.label_ShowUserText("There are no configuration yet. Please create some configuartions")
TypeError: 'QLabel' object is not callable
由于JSON文档来自特定于
self.jsonfile = str(self.tn+'.json')
的文件,因此请使用json.load()
而不是json.loads()
:json.loads
json.load
更改此行:
到
这里有两个问题:
json.loads需要字符串,而不是路径。将其更改为:
您忘记了JSON结构中的“配置”级别:
我为您创建了一个最小的工作示例:https://www.online-python.com/ZoGQWjlehI
相关问题 更多 >
编程相关推荐