首页 > 解决方案 > 有没有办法在引用原始列表时将列表元素转换为自变量?

问题描述

我想从目录中获取一种类型的所有文件(.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

每个变量都会调用 .npy 文件中的数据,例如使用 np.load ,这样基本上它看起来像这样:

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)

标签: pythondictionaryfor-loopinstance-variables

解决方案


您可以使用列表推导来创建修剪文件名的新列表。

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)

不过,我可能错过了您的问题的重点,所以也许这个答案有您所需要的。


推荐阅读