繁体   English   中英

制作Python脚本以加载目录中的所有npy / npz文件

[英]Making a Python script to load all npy/npz files in a directory

我想将所有npy / npz文件加载到我的交互式python shell中,所以我不必去:

var1 = np.load('var1.npy')

每一个人。 我制作了这个脚本,但它不起作用,因为变量命名空间就在脚本中(假装缩进是正确的)。 这样做的正确方法是什么?

def load_all():
import numpy as np
from os import listdir
from os.path import isfile, join
from os import getcwd

mypath = getcwd()
print 'loading all .npy and .npz files from ',mypath
files = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]

for f in files:  
    if f[-4:] in ('.npy','.npz'):
        name = f[:-4]+'_'+f[-3:]
        print 'loading', f, 'as', name
        var = np.load(f)
        exec(name + " = var")

我用的是glob 例如, glob.glob('*.np[yz]')将返回当前目录中所有.npy和.npz文件名的列表。 然后,您可以遍历该列表,依次加载每个文件名。 您是否尝试将加载它们的结果放入与文件名匹配的局部变量中? 有比这更安全的设计 - 我使用单个字典并使用名称作为键,如下所示:

numpy_vars = {}
for np_name in glob.glob('*.np[yz]'):
    numpy_vars[np_name] = np.load(np_name)

简单和pythonic。

import numpy as np
from os import listdir

directory_path = '.'
file_types = ['npy', 'npz']

np_vars = {dir_content: np.load(dir_content)
           for dir_content in listdir(directory_path)
           if dir_content.split('.')[-1] in file_types}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM