Python 常用文件读取与存储方式,包括 mat,npz,csv,xlsx,mkl,pkl 等格式。
Cham’s Blog 首发原创
文件索引
root = './data/office-caltech/'
dirs_domain = os.listdir(root) # 输出所有文件和文件夹
for d in dirs_domain: # 文件索引
if os.path.isdir(d): pass # 判断是否为文件夹
if os.path.isfile(d): pass # 判断是否为文件
for i, c in zip(range(len(dirs_domain)), dirs_domain): # 文件排序、名称
files = os.listdir(root+c)
txt 格式
# 读取txt文件
# 将txt读入数组中
import numpy as np
data = np.loadtxt("data.txt")
# 将数组写入txt文件
import numpy as np
np.save("data.txt",data)
# 将文件读入list中
data = []
for line in open("data.txt", "r"): # 设置文件对象并读取每一行文件
data.append(line) # 将每一行文件加入到list中
# 将list写入txt文件
with open('data.txt','w') as f:
for name in info_list:
f.write(name)
f.write('\n')
mat 格式
# 读取matlab的文件
from scipy.io import loadmat
def load_data(path_to_file):
annots = loadmat(path_to_file)
data = annots['x']
labels = annots['y'].flatten()
labels -= 1
return data, labels
# 保存matlab的文件
from scipy.io import savemat
savemat('D://data.mat', {'x':data})
npz 格式
# 保存文件
import numpy as np
np.savez("data.npz", x=x, y=y)
# 读取文件
import numpy as np
data = np.load('./data/data.npz')
x, z = data['x'], data['z']
csv 格式
# 读取文件
import csv
import numpy as np
with open('./data/train.csv', 'r') as csvfile:
reader = csv.reader(csvfile)
rows = [row for row in reader]
data = np.array(rows)
# 保存文件
import pandas as pd
a, b = [1, 2, 3], [4, 5, 6] # 只能是一维数组
dataframe = pd.DataFrame({'a_name': a, 'b_name': b}) # 字典中的key值即为csv中列名
dataframe.to_csv("test.csv", index=False, sep=',')
xlsx 格式
# 读取文件
import pandas as pd
df = pd.read_excel('./data/aa.xlsx') # usecols =[0, 5] 指定列
[num, item] = df.values.shape
# 保存文件
import pandas as pd
data = pd.DataFrame([['a', 'b'], ['c', 'd']], index=['row 1', 'row 2'],
... columns=['col 1', 'col 2'])
data.to_excel('./data/bb.xlsx', index=False)
mkl 格式
import torch as tr
# 读取模型文件
model_path = './models/trained_model.pkl'
model = MLP(n_feature=100, n_hidden=16, n_output=2)
model.load_state_dict(tr.load(model_path))
# 保存模型文件
model = MLP(n_feature=100, n_hidden=16, n_output=2)
tr.save(model.state_dict(), model_path)
pkl 格式
import joblib
# 模型训练
gbm = LGBMClassifier(num_leaves=31, learning_rate=0.05, n_estimators=20)
gbm.fit(X_train, y_train, eval_set=[(X_test, y_test)], early_stopping_rounds=5)
# 模型存储
joblib.dump(gbm, 'demo_model.pkl')
# 模型加载
gbm = joblib.load('demo_model.pkl')