Python2.7中的错误文件描述符

2024-10-01 17:23:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从aws3下载一个带有boto3的文件,它是一个基本的JSON文件。在

{
    "Counter": 0,
    "NumOfReset": 0,
    "Highest": 0
}

我可以打开JSON文件,但是当我在更改一些值后将其转储回同一个文件时,我得到IOError: [Errno 9] Bad file descriptor。在

^{pr2}$

我只是使用了错误的文件模式还是我做得不正确?在


Tags: 文件json错误counter模式boto3filebad
1条回答
网友
1楼 · 发布于 2024-10-01 17:23:29

有两件事。它的r+不是rw,如果要覆盖以前的数据,则需要使用fh.seek(0)返回到文件的开头。否则,将追加更改后的JSON字符串。在

with open("/tmp/data.json", "r+") as fh:
    data = json.load(fh)
    i = data["Counter"]
    i = i + 1
    if i >= data["Highest"]:
        data["Highest"] = i

    fh.seek(0)
    json.dump(data, fh)
    fh.close()

但这可能只会部分覆盖数据。所以用w关闭并重新打开文件可能是一个更好的主意。在

^{pr2}$

不需要fh.close(),这就是with .. as的目的。在

相关问题 更多 >

    热门问题