python - 错误将字符串变量作为文件名传递以打开文件
问题描述
我有这个问题:我试着列出一个目录中的所有文件名,然后用左边的数字打印它们,让用户选择要使用的文件。数字存在是因为它们与列表中文件名位置的索引匹配。当我在列表中选择一个特定的字符串文件名并将其传递给
`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' )传递给该方法,它会起作用..我只是不明白为什么。在此先感谢您的帮助
解决方案
这很可能是因为这行代码。
jsons=glob.glob("*.json")
然后你有
for json in jsons: