【问题标题】:Variable string inside variable name变量名内的变量字符串
【发布时间】:2021-03-07 13:39:48
【问题描述】:

我知道这是一个糟糕的标题,并且我意识到字典通常是解决这个问题的方法,但我不确定它们如何在我的特定情况下解决这个问题。

我正在使用argsparse 收集用户的输入。我们将调用 args.session_1args.session_2 的两个变量引用路径。

稍后在我的脚本中,我遍历会话 1 和 2,并且我还需要遍历 args.session_{ } 路径引用的目录。但是,我不确定后者该怎么做。

例如,我通常使用 f 字符串,但它不会像这样工作:

for session in [1, 2]:
    for file in os.listdir(f'args.session_{session}'):
        do whatever

这里,args.session_1 是一个字符串,而不是变量名,所以这不起作用。我的问题是,我怎样才能让args.session_{ } 仍然是一个变量名,同时让会话本身也是一个变量?

这需要使用字典吗?我不确定这会有什么帮助,因为字典值会遇到与字符串相同的问题。

【问题讨论】:

  • 如果您使用print(args.session_1)session_2,您会得到什么?
  • 它们是字符串。请参阅@Barmar 的回答,它非常有效。

标签: python string loops variables


【解决方案1】:

使用getattr() 动态访问属性。

for session in [1, 2]:
    for file in os.listdir(getattr(args, 'session_' + session)):
        # do whatever

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多