有没有办法在引用原始列表时将列表元素转换为自变量?

时间:2019-04-18 17:50:55

标签: python dictionary for-loop instance-variables

我想从目录中获取一种(.npy)类型的所有文件,并将它们转换为命名变量,这些变量使用numpy中的np.load从.npy文件中调用数据。

我已经使用glob创建了一种类型的文件列表,但是我似乎可以找到一种很好的方法来进行操作。

os.chdir("/Users/Directory/")
dir_path = os.getcwd()

file_names = sorted(glob.glob('*.npy'))
file_names = file_names[:]
for f in file_names:
    print(f)
EELS 10nmIF 16nm.npy
EELS 4nmIF 16nm.npy
EELS Background.npy

我希望输出是一组名称为

的变量
EELS 10nmIF 16nm
EELS 4nmIF 16nm
EELS Background

每个变量都将使用np.load从.npy文件中调用数据,以使其本质上看起来像这样:

EELS 10nmIF 16nm = np.load(dir_path + EELS 10nmIF 16nm.npy)
EELS 4nmIF 16nm = np.load(dir_path + EELS 4nmIF 16nm.npy)
EELS Background = np.load(dir_path + EELS Background.npy)

2 个答案:

答案 0 :(得分:1)

您可以使用list comprehension创建新的修剪文件名列表。

variables = [f[0:-4] for f in file_names]

然后,您可以使用此列表的内容进行任何操作,包括加载每个文件:

for v in variables:
    np.load(dir_path + v + '.npy')

或者,跳过上述步骤,直接直接加载所有文件:

for f in file_names:
    np.load(dir_path + f)

尽管我可能会遗漏您的问题,所以this answer可能满足您的需求。

答案 1 :(得分:0)

我不确定100%,但是我认为您无法在运行时使用python(或我知道的任何其他语言)分配变量名,但是您可以使用具有文件名作为键的字典和然后使用一个对象作为包含文件中数据的值