我试图将字典放入.txt文件,然后使用json.load(File.read())将字符串解析为字典。
由于某种原因,它不起作用。
代码:
import json
File = open(r"{}.txt".format(path), 'w')
File.write(json.dumps({"Key":"Value"}))
File.close()
#There the .txt file is {'Key':'Value'}
File = open(r"{}.txt".format(path), 'r')
Dictionary = json.loads(File.read())错误:
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
json.loads(FIle.read())
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1520.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.1520.0_x64__qbz5n2kfra8p0\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1520.0_x64__qbz5n2kfra8p0\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)但当我这么做的时候
>>> json.dumps({"Key":"Value"})
'{"Key": "Value"}'
>>> json.loads('{"Key": "Value"}')
{'Key': 'Value'}
>>>没什么不对的。
为什么会发生这种事?事先谢谢你的回答。
编辑
非常感谢在评论中建议我使用json.load()的人,它起了作用。
>>> json.load(open(r"C:\\Users\FLAK-ZOSO\Desktop\mlmlm.txt", 'r+'))
{'Key': 'Value'}
>>> Dictionary = json.load(open(r"C:\\Users\WouldYouLikeToKnow\Desktop\mlmlm.txt", 'r+'))
>>> Dictionary
{'Key': 'Value'}问题是文件结果为空,因为在File.close()之前没有保存编辑。
谢谢你们帮助我。
发布于 2021-12-14 16:24:52
json库有比json.dumps()和json.loads()更多的方法。
json.dumps代表dump-s,s代表dump-s,s代表load-s,s代表string实际上,这两个方法作为参数string-type返回或传递。
>>> json.dumps({1: 'a', 2: 'b'}) #Needs as parameter an object or a value
'{"1": "a", "2": "b"}' #Returns a string
>>> json.loads('{"1": "a", "2": "b"}') #Needs as parameter a string
{'1': 'a', '2': 'b'} #Parses an object or returns a valuejson.dump写入指定为第二个参数(.txt或.json)的文件,第一个参数passedjson.load从作为第一个参数传递的文件(.txt或.json)中读取。
这两种方法是读取或写入.json文件。
>>> json.dumps({1: 'a'}, open('file.json', 'w+'))
>>> json.load(open('file.json', 'r'))
{'1': 'a'} #Returns an object or a value因此,为了避免引发错误,可以避免这样做:
value = json.loads(open('file.json', 'r').read()) #Shouldn't do this
value = json.load(open('file.json', 'r')) #Much better, more efficient and it doesn't raise any error发布于 2021-08-20 13:57:52
因为我没有名誉来评论,所以我写这篇文章是作为回答。我试图在我的机器上运行您的错误代码,它没有任何问题(如果我用‘check_json.json’之类的东西替换路径的话)。这告诉我,这与你的环境有关。
当您对空字符串进行操作时,(json.decoder.JSONDecodeError:本身期望值:第1列(char 0))似乎会弹出,这意味着File.read()返回的是json.loads不知道如何处理的空字符串。
一些可能的问题可以是:
https://stackoverflow.com/questions/68863306
复制相似问题