os.path.join抛出错误“参数类型必须是str或字节,而不是TextIOWrapper”

2024-09-30 01:18:45 发布

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

我试图打开并读取一个json文件(稍后也会这样做,并将一些json数据转储到同一个文件中)

我只是想使用一个变量作为文件名,因此我的代码如下所示:

layout_file = 'layouts2.json'
try:
    filename = os.path.join(app.static_folder, layout_file)
    with open(filename) as layout_file:
        layouts = json.load(layout_file)
except:
    print("could not load layouts from config file")

在我的代码看起来像这样并且运行良好之前:

try:
    filename = os.path.join(app.static_folder, 'layouts2.json')
    with open(filename) as layout_file:
        layouts = json.load(layout_file)
except:
    print("could not load layouts from config file")

我得到的错误是error 'type of argument must be str or bytes not TextIOWrapper'。 我现在真的不知道该怎么办,我想即使这样也应该很快解决。 提前谢谢


Tags: 文件path代码jsonapposnotload
1条回答
网友
1楼 · 发布于 2024-09-30 01:18:45

您对文件名和文件句柄都使用了相同的变量layout_file

在编写的代码中,这应该可以正常工作;但是,如果在循环或类似的情况下执行,则可能会导致两个值之间的混淆。(如果您使用mypy,它也会抱怨。)

使用不同的变量名

layout_filename = 'layouts2.json'
try:
    filename = os.path.join(app.static_folder, layout_filename)
    with open(filename) as layout_fh:
        layouts = json.load(layout_fh)
except:
    print("could not load layouts from config file")

相关问题 更多 >

    热门问题