在Python中绘制变量值而不是名称

时间:2016-05-17 00:17:54

标签: python

我有大量的文件,其中包含有关特定日期的数据,但有随机(丑陋)名称,我想将其分配给更加结构化的字符串“infile”,然后我可以使用它来引用原始文件名。具体来说,在以下代码示例中:

file_25Jan1995 = 'random_file_name_x54r'

year = '1995'
month = 'Jan'
day = '25'

infile = 'file_'+day+month+year   
print infile
print file_25Jan1995

此代码生成以下输出:

file_25Jan1995
random_file_name_x54r

我的问题是,如何通过新创建的字符串“infile”直接打印(或传递给函数)原始文件名?所以我想“打印some_method(infile)”来返回“random_file_name_x54r”。使用dict是唯一的方法吗?

2 个答案:

答案 0 :(得分:1)

鉴于您已定义变量,您可以从locals中按名称检索值:

print(locals()[infile])

或使用eval:

print(eval(infile))

但你可能不想这样做。由于您需要首先创建所有变量,因此您可以将它们放在字典中。

还有一个建议......如果您在模块中定义了变量,例如datasets.py,那么您可以使用getattr从模块中获取它们:

import datasets

print(getattr(datasets, infile))

答案 1 :(得分:0)

你的问题很不清楚。你只是在寻找这样的东西:

def some_method(input):
    #do something to input
    return input

print some_method(infile)