首页 > 解决方案 > 错误将字符串变量作为文件名传递以打开文件

问题描述

我有这个问题:我试着列出一个目录中的所有文件名,然后用左边的数字打印它们,让用户选择要使用的文件。数字存在是因为它们与列表中文件名位置的索引匹配。当我在列表中选择一个特定的字符串文件名并将其传递给

`f = 打开(文件名,“r”)

数据 = json.loads(f.read())`

我得到:

回溯(最后一次调用):文件“test.py”,第 170 行,在 data = json.loads(f.read()) 中 AttributeError:'str' 对象没有属性 'loads'

完整代码:

jsons=glob.glob("*.json")
print(type(jsons))
print(type(jsons[0]))
n=0
if(jsons):
    for json in jsons:
        print(str(n) + ' - ' + json)
        n=n+1

        jsonselection=int(input('select your settings file: '))
        filename=(" ".join(jsons[jsonselection].split()))
        print()
        print('your selection: ' + filename)
else:
    sys.exit(colored('no json files available.','red'))

f = open (filename, "r")  

data = json.loads(f.read())

实际上,如果我将我定义的随机变量(例如 name='file' )传递给该方法,它会起作用..我只是不明白为什么。在此先感谢您的帮助

标签: pythonjsonstringobjectattributes

解决方案


这很可能是因为这行代码。

jsons=glob.glob("*.json")

然后你有

for json in jsons:

推荐阅读