json.decoder.JSONDecodeError:期望值:第1行第1列(char 0)

JTH*_*JTH 21 python json

我试图导入一个使用保存json.dumps并包含推文坐标的文件:

{
    "type": "Point", 
    "coordinates": [
        -4.62352292, 
        55.44787441
    ]
}
Run Code Online (Sandbox Code Playgroud)

我的代码是:

>>> import json
>>> data = json.loads('/Users/JoshuaHawley/clean1.txt')  
Run Code Online (Sandbox Code Playgroud)

但每次我收到错误:

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Run Code Online (Sandbox Code Playgroud)

我想最终提取所有坐标并将它们分别保存到不同的文件中,以便可以对它们进行映射,但这个看似简单的问题阻止了我这样做.我已经查看了类似错误的答案,但似乎无法将其应用于此.任何帮助将不胜感激,因为我对python相对较新.

Mar*_*ers 32

json.loads()采用JSON编码的字符串,而不是文件名.您想要使用json.load()(no s)而传入一个打开的文件对象:

with open('/Users/JoshuaHawley/clean1.txt') as jsonfile:
    data = json.load(jsonfile)
Run Code Online (Sandbox Code Playgroud)

open()命令生成一个文件对象,json.load()然后可以从中读取,以便为您生成解码的Python对象.该with语句确保文件在完成后再次关闭.

另一种方法是自己读取数据然后将其传递给json.loads().


Ser*_*y_M 7

我有类似的错误:“期望值:第1行第1列(字符0)”

它有助于我添加“ myfile.seek(0)”,将指针移至0字符

with open(storage_path, 'r') as myfile:
if len(myfile.readlines()) != 0:
    myfile.seek(0)
    Bank_0 = json.load(myfile)
Run Code Online (Sandbox Code Playgroud)

  • 为什么要使用 `readlines()` **呢?是的,从文件读取首先会将读取位置放在文件末尾,因此需要回溯到开头。但是,如果您“仅”打开文件并使用“json.load()”,那么您一开始就不会处于这个位置。 (3认同)