TypeError:预期的str,字节或os.PathLike对象,而不是_io.TextIOWrapper

时间:2018-11-07 22:13:37

标签: python json

我正在尝试使用此处的示例打开,读取,修改和关闭json文件:

How to add a key-value to JSON data retrieved from a file with Python?

import os
import json

path = '/m/shared/Suyash/testdata/BIDS/sub-165/ses-1a/func'
os.chdir(path)

string_filename = "sub-165_ses-1a_task-cue_run-02_bold.json"

with open ("sub-165_ses-1a_task-cue_run-02_bold.json", "r") as jsonFile:
    json_decoded = json.load(jsonFile)

json_decoded["TaskName"] = "CUEEEE"

with open(jsonFile, 'w') as jsonFIle:
    json.dump(json_decoded,jsonFile) ######## error here that open() won't work with _io.TextIOWrapper

我总是收到错误提示(open(jsonFile...)不能与jsonFile一起使用open()变量。我使用了确切的格式作为链接中提供的示例

2 个答案:

答案 0 :(得分:3)

这个问题有点老了,但是对于有同样问题的任何人:

是的,您无法打开jsonFile变量。它指向另一个文件连接并打开的指针需要一个字符串或类似的东西。值得注意的是,一旦退出“ with”块,也应关闭jsonFile,因此不应在其之外引用它。

但是要回答这个问题:

with open(jsonFile, 'w') as jsonFIle:
   json.dump(json_decoded,jsonFile)

应该是

with open(string_filename, 'w') as jsonFIle:
    json.dump(json_decoded,jsonFile)

您可以看到我们只需要使用相同的字符串来打开新连接,然后就可以根据需要为它赋予与读取文件相同的别名。就个人而言,我更喜欢in_file和out_file只是为了明确我的意图。

答案 1 :(得分:-1)

当您从互联网上复制代码时,不能保证该代码确实有效。您有一个有效的“开放式”解决方案,而另一个无效。您还会收到一条错误消息,告诉您第二个为什么不起作用。那应该给您足够的信息来解决问题。