Python:读写txt、xlsx、mat、csv、yaml、npy、npz文件

目录

# .txt

# .xlsx

# .mat

# .csv

# .yaml

# .npy&.npz


# .txt

  # 读取
  path = r'C:\Users\Lenovo\Desktop\a.txt'
  with open(path,'r') as f:
      data = f.read().splitlines()  # 去除换行符号\n
      
  # 写入
  result = [['a',1.5,2],['b',1.7,3],['c',9.3,4]]
  np.savetxt(path,result,'%s')

# .xlsx

    # 读取
    data = pandas.read_excel(path,sheet_name='P_D',header=None)  # header=None对应的是纯数据,无表头,正常有表头    
    有表头时读取某一列
    a = data.iloc[:,0].values      # iloc用序号索引列  常用
    a = data.loc[:,'num'].values   # loc是用str索引列
    读取某一行
    c = data.iloc[0,:].values # header无论是啥,读取的都是数据的第一行,不会出现表头的那一行
    常用:
    pp = [data.iloc[i,:].values for i in range(data.shape[0])]  data.shape[0]从数据开始,不会算上表头的那一行
      
    # 写入
    import pandas
    path = r'C:\Users\Lenovo\Desktop\a.xlsx'
    data = [['a',15],['b',23.4],['c',45]]
    df = pandas.DataFrame(data,columns=['alp','num'])  # columns指定每一列的名称
    df.to_excel(path,sheet_name='a',index=False)       # index=False,就会左紧邻,不会有额外的序号占一列

# .mat

    # 读取
    import scipy.io
    data = scipy.io.loadmat(path)['A']
        
    # 写入
    import scipy.io
    result = [[1,2,3],[4.5,6.5,2],[6,4,2.3]]
    scipy.io.savemat(path,{'A':result})   # 保存为字典格式:使用时用A索引
    

# .csv

# csv读取教程
# https://zhuanlan.zhihu.com/p/266415847
import csv
with open(radar_path,'r',encoding='gbk') as f:   # 有中文时,用gbk
    csv_reader = csv.reader(f)
    data = [row for row in csv_reader]
header = data[0] # ['批号', '时间', '传感器编号', '距离(km)', '方位(度)']
data = data[1:]  # ['1', '6', '1', '55.1363', '27.8399']

# .yaml

    # 读取
    import yaml
    with open(path,'r') as f:
        data = yaml.load(f,Loader=yaml.FullLoader)  # 注意:BaseLoader读出来时str类型,所以一般用FullLoader
        
    # 写入
    import yaml
    a = {'name':'hjw','year':24,'hobby':'soccer','data':{'a':1.2,'b':3.2}}
    with open(path,'w') as f:
        yaml.dump(a,stream=f)

# .npy&.npz

import numpy as np

def dict_to_npz():
    # 保存dict为.npz文件
    a = {"a": 1, "b": 2, "c": 3}
    np.savez("test.npz", a)
    # 加载.npz文件
    data = np.load("test.npz", allow_pickle=True)['arr_0'].item()
    print(data) # {'a': 1, 'b': 2, 'c': 3}


# .npy文件就是np.save()之后产生的
# .npz文件是多个numpy保存到一起  '''
a = np.array([1,2,3,4,5])
b = np.array([6,7,8,9,10])
np.savez(r'D:\hjw.npz',n1=a,n2=b)  # 修改名称为n1,n2
np.savez_compressed()  # 用法一样,只是耗时更长,有了压缩
c = np.load(r'D:\hjw.npz')
print(c.files) # ['n1', 'n2']
print(c['n1']) # [1 2 3 4 5]
print(c['n2']) # [ 6  7  8  9 10]

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值