【问题标题】:error Passing a String variable as filename to open a file错误将字符串变量作为文件名传递以打开文件
【发布时间】:2021-07-15 22:19:30
【问题描述】:

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

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

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

我明白了:

Traceback(最近一次调用最后一次): 文件“test.py”,第 170 行,在 数据 = 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')传递给该方法,它就可以工作。我只是不明白为什么。提前感谢您的帮助

【问题讨论】:

  • 您已经使用 for json in jsons 中的变量隐藏了 json 模块名称

标签: python json string object attributes


【解决方案1】:

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

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

然后你就有了

for json in jsons:

【讨论】:

  • 对不起,我不明白我必须改变什么。实际上 for 语句正确打印了文件名..
猜你喜欢
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 2013-01-15
  • 1970-01-01
  • 1970-01-01
  • 2022-10-02
相关资源
最近更新 更多