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

时间:2020-05-06 08:04:42

标签: python json operating-system filesystems

我正在尝试打开一个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'。 我现在真的不知道该怎么办,即使我认为这应该可以很快解决。 预先感谢!

1 个答案:

答案 0 :(得分:0)

文件名和文件句柄都使用相同的变量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")