json 为什么我从os.open()得到int作为返回值?

xxb16uws  于 2023-10-21  发布在  其他
关注(0)|答案(1)|浏览(92)

我正在使用json模块,但是每当我使用json.dump或json.load函数时,我都会得到一个错误,说int没有.write()或.read()函数。这意味着使用os.open(“somefile.txt”)会给我一个int而不是普通的文件obj。
如果我尝试这样做:

import os
import json

file = os.open("Some_file.json", flags= os.RDWR | os.TRUNC)

data = {"something": "something"}

json.dump(data, file)

我得到一个这样的错误:
AttributeError: 'int' object has no attribute 'write'
使用Python 3.12
我尝试使用.dumps和.loads与来自os.read()的字符串来解决这个问题,但是.loads()不能很好地与来自字符串的文件一起工作。
我试过这样的东西:

import os
import json

file = os.open("Some_file.json", flags= os.RDONLY | os.TEXT)

raw_data = os.read(file)

decoded_data = raw_data.decode()

data = json.loads(decoded_data)

得到了这个

raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

有没有什么方法可以再次获得一个普通的文件对象,或者有没有什么方法可以解决这个问题?

rur96b6h

rur96b6h1#

你能打开一个文件来写和转储JSON数据吗?

with open("Some_file.json", 'w') as file:

    data = {"something": "something"}

    json.dump(data, file)

相关问题