根据用户对函数的输入访问文件名的PART - Python

时间:2012-07-26 22:25:20

标签: python

我正在尝试弄清楚如何完成以下操作:

我有以下列格式命名的用户命名:

<user>_hx

我想用这样的函数访问它们:

def foo(user, other_stuff):
  user_hx[key]

......等等。

我尝试使用%访问如下:

def foo(user, other_stuff):
  %r_hx %user[key]

但由于显而易见的原因,我知道这无法奏效。

书于?

3 个答案:

答案 0 :(得分:1)

我认为您要问的是如何根据表示其名称的字符串访问变量。 Python使这很容易:

globals()['%s_hx' % user]

会为您提供变量<user>_hx,因此您只需要

globals()['%s_hx' % user][key]

(我不确定您是否应该使用globals()locals();这取决于您的变量的定义方式以及您尝试从中获取变量的位置。

也就是说,可能有一种更简单/更清洁的方式来做你正在做的事情。例如,您是否考虑将所有这些词典放在“主词典”中,以便您可以传递它们,以及只访问它们

答案 1 :(得分:0)

def foo(user,other_stuff):
     fname = "%s_hx"%user[key] #not sure where key is comming from... but would result in something like "bob_hx"
     with open(fname) as f:
          print f.read()

可能?/

答案 2 :(得分:0)

不要将名称用作变量。您可以将您的词典集合放在另一个顶级字典中,并将这些名称作为键。

users = {
    "user1_hx": {"name": "User 1"},
    "user2_hx": {"name": "User 2"),
    }

然后访问:

realname = users["%s_hx" % name]["name"]