当我想要循环读取某个文件夹中的所有文件,并使用文件名作为其变量名,以npy文件为例,以下是其Python实现:
import numpy as np
import os
import glob
# 指定包含.npy文件的文件夹路径
folder_path = '/home/test/'
# 使用glob获取文件夹中所有.npy文件的路径
npy_files = glob.glob(os.path.join(folder_path, '*.npy'))
# 加载.npy文件并使用文件名作为变量名
for npy_file in npy_files:
variable_name = os.path.splitext(os.path.basename(npy_file))[0] # 获取文件名并去除扩展名
globals()[variable_name] = np.load(npy_file)
如果有多个文件夹,可以加一个外层的循环来遍历文件夹 :
import numpy as np
import os
import glob
# 定义要循环的文件夹路径列表
folder_paths = [
'/home/test1/',
'/home/test2/',
'/home/test3/'
]
# 循环遍历每个文件夹
for folder_path in folder_paths:
# 使用glob获取文件夹中所有.npy文件的路径
npy_files = glob.glob(os.path.join(folder_path, '*.npy'))
# 加载.npy文件并使用文件名作为变量名
for npy_file in npy_files:
variable_name = os.path.splitext(os.path.basename(npy_file))[0] # 获取文件名并去除扩展名
globals()[variable_name] = np.load(npy_file)
如果还想匹配多种文件后缀,还可以在glob.glob
的参数中使用通配符,比如*
,来匹配多种文件后缀:
import glob
import os
# 定义要循环的文件夹路径列表
folder_paths = [
'/home/test/',
]
# 定义要匹配的多个后缀
allowed_suffixes = ['*.npy', '*.txt', '*.csv'] # 你可以添加其他后缀
# 循环遍历每个文件夹
for folder_path in folder_paths:
# 使用glob获取文件夹中所有符合后缀的文件的路径
files = []
for suffix in allowed_suffixes:
files.extend(glob.glob(os.path.join(folder_path, suffix)))
# 加载文件并使用文件名作为变量名
for f in files:
variable_name = os.path.splitext(os.path.basename(f))[0]
globals()[variable_name] = np.load(f)
print(variable_name)