为什么在尝试将 JSON 数据从一个文件解析到另一个文件时,我收到 TypeError:write() 参数必须是 str,而不是 None?

Why am I getting TypeError: write() argument must be str, not None when trying to parse JSON data from a file to another?

提问人:Andres Pachano 提问时间:6/16/2023 最后编辑:Andres Pachano 更新时间:6/19/2023 访问量:300

问:

我在python中有这段代码

keys = input('Enter the keys you want to extract separated by commas: ').split(',')


def extract_key_value(key):
    with open(output, "w") as f:
        with open(locationJSON, "r") as fi:
            data = json.loads(fi.read())
            final_key = json.dumps(key)
            value = data.get(str(final_key))
            
        f.write(value)

我正在尝试从大型 JSON 文件中提取一些特定的键和值,以便稍后将这些值转换为 CSV 文件。

请帮忙

TYSM公司

我尝试了不同的方法,我什至向 chatGPT 和 Bard 寻求指导,但我无法提取 JSON 格式的键和值,也无法提取它们。

我想要这样的输出JSON文件

[
{
"key":"value",

},
{
"key":"value"
},
...
]

我想实现的是从loacationJSON文件中获取一对键和值,并将它们作为JSON写入输出文件。然后,我会将它们转换为CSV文件以进行分析。我不得不提的是,locationJSON 文件包含对象内部的对象,并且我还需要从那里提取一些值。

我尝试了调试,看看我搞砸了哪里。找到了它,但仍然得到同样的错误。我阅读了 json 库文档。但找不到解决方案。

另外,我一直在和一个同样编码的朋友同步,但我们俩都非常迷茫,以至于我们谁也找不到解决方案。

JSON python-3.x 文件

评论


答:

0赞 yedpodtrzitko 6/16/2023 #1

错误消息是不言自明的 - 变量的值是 。您可以通过添加到代码中来检查这一点。valueNoneprint(value)

该错误很可能是由以下行引起的:

final_key = json.dumps(key)

因此,无论您放在那里什么,都会序列化为 JSON:

In [1]: json.dumps('foo')
Out[1]: '"foo"'

所以我认为你想做的是这样的:

value = data.get(str(key))

我的建议 - 在此过程中添加很多内容,然后您将能够确定哪里出了问题。print()

不相关的建议 - 当您从文件加载 json 时,如果将整个内容读取到字符串中,然后通过以下方式加载字符串,则可以使用:json.load(fi)json.loads()

with open(locationJSON, "r") as fi:
    data = json.load(fi)
        

评论

0赞 Andres Pachano 6/17/2023
我试图这样做,它发送这个' 文件“path/to/file”,第 18 行,在 extract_key_value f.write(value) TypeError:write() 参数必须是 str,而不是 None'