我正在尝试使用此处的示例打开,读取,修改和关闭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()
一起使用。我使用了上面链接中提供的确切格式作为示例,所以我不确定为什么它不起作用。最终这是正确的使用更大的脚本,所以我想避免使用硬编码/使用字符串作为json文件名。 最佳答案
这个问题有点老了,但是对于有同样问题的任何人:
没错,您无法打开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,以明确表明自己的意图。