【问题标题】:Python can't open JSON file, giving JSONDecodeErrorPython 打不开 JSON 文件,报 JSONDecodeError
【发布时间】:2020-08-06 13:04:55
【问题描述】:

我想在我的项目中使用 Python 打开一个 JSON 文件,但我经常收到以下错误:

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

这是代码:

import json
with open("../data.txt") as json_file:
    data = json.load(json_file)

我有一个非常简单的文本文件,其中包含 JSON 格式的数据。这是data.txt 文件:

{
    "data":  [
                 {
                     "day":  "22/04/2020 15:35",
                     "viewcount":  "1"
                 },
                 {
                     "day":  "22/04/2020 20:51",
                     "viewcount":  "2"
                 }
             ]
}

【问题讨论】:

  • 您确定该文件的开头没有多余的字符吗?另外,您确定它是使用 UTF-8 编码保存的,而不是例如带有字节顺序标记的 UTF-8?
  • 我会手动输入一个新的 JSON 文件,看看会发生什么。请务必按照@AKX 的建议检查编码。
  • 是的,我复制了确切的文件。该文件的开头绝对没有任何内容。我唯一不确定的是:我用 powershell 脚本制作了那个文件,也许它没有以正确的编码保存它。
  • 您可以尝试将encoding="utf_8_sig" 添加到open() 调用中。

标签: python json powershell


【解决方案1】:

我已经按原样尝试了您的源代码和可见的 JSON 数据,它运行没有任何问题。

我建议以二进制形式检查文件的内容,例如通过使用诸如hexdump 之类的实用程序来查看它是如何开始的:

$ hexdump data.txt 
0000000 0a7b 2020 2020 6422 7461 2261 203a 5b20                                                                                                                                                
0000010 200a 2020 2020 2020 2020 2020 2020 2020                                                                                                                                                
0000020 2020 0a7b 2020 2020 2020 2020 2020 2020
...

或使用file 实用程序检查编码,如以下帖子所述:https://unix.stackexchange.com/questions/11602/how-can-i-test-the-encoding-of-a-text-file-is-it-valid-and-what-is-it

【讨论】:

    【解决方案2】:

    python 代码不是问题。 该文件未以 UTF-8 编码保存,这是问题所在。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    相关资源
    最近更新 更多