Python读取写入文件

Python读取写入文件

1. 读取写入.mat文件

import numpy as np
import scipy

numberA=4  #int32
listB=[1,2,3,4,5] #列表
arrayC=np.array([[1,2,3],[4,5,6],[7,8,9]]) #二维数组
arrayD=np.array([[[1,1],[2,2],[3,3]],[[4,4],[5,5],[6,6]]]) #三维数组

"保存mat文件,所有数据都会被保存为二维数组及以上的形式"
scipy.io.savemat('dataFile.mat',{'numberA':numberA,'listB':listB,'arrayC':arrayC,'arrayD':arrayD})

"读取mat文件"
dataFile=scipy.io.loadmat('dataFile.mat')
numberA=dataFile['numberA'][0][0]  #[[4]]
listB=dataFile['listB'][0]         #array([[1,2,3,4,5]])
arrayC=dataFile['arrayC']  
arrayD=dataFile['arrayD'] 

2. 读取写入pickle文件

仍然使用上面的变量,另外再增加几个变量

import pickle
numberA=4  #int32
listB=[1,2,3,4,5]  #列表
arrayC=np.array([[1,2,3],[4,5,6],[7,8,9]])  #二维数组
arrayD=np.array([[[1,1],[2,2],[3,3]],[[4,4],[5,5],[6,6]]])#三维数组
tuple_one=(1,2);tuple_two=(3,4) #元组
tupleE=(tuple_one,tuple_two)  
"写入pickle文件,使用dump方法"
with open("dataFile.pkl",'wb') as f:
    #依次写入
    pickle.dump(numberA,f)
    pickle.dump(listB,f)

"读取pickle文件,使用load方法"
with open("dataFile.pkl",'rb') as f:
    #按序读取
    numberA=pickle.load(f)
    listB=pickle.load(f)
    #对于元组可以这样读取
    tuple_one,tuple_two=pickle.load(f)

注意:
(1)在python3.5中为import pickle,而在python2.7中为 import cPickle
(2)在python3.5中读取和写入pickle文件,都必须以二进制读写方式,即加 ‘b’

3. 读取写入txt文件

3.1 将数组写入txt文件

#numpy.savetxt(fname,X,fmt='%.18e',delimiter=' ',newline='\n',header='',footer='',comments='# ')
#fname:文件名; X:要保存的数组; fmt:写入txt文件的格式; delimiter:列分隔符; newline:行分隔符
#header:添加在文件头部; footer:添加在文件尾部; comments:写在header和footer字符串前,标识它们为注释,默认为’#‘

fname='dataFile.txt'
#直接用文件名写入,不要使用文件对象写入
#如下
np.savetxt(fname,arrayC,fmt='%d\t'*arrayC.shape[1],delimiter='\t',newline='\r\n')
#或者
np.savetxt(fname,arrayC,delimiter='\t',newline='\r\n')(fname,arrayC,fmt='%d\t'*arrayC.shape[1],delimiter=',',newline='\r\n')

注意:
(1)使用fmt时,delimiter被忽略,即不起作用
(2)windows下换行要使用’\r\n’
(3)关于fmt的一些讨论可以看这个网址
关于numpy.savemat的详细说明可以参考这个网址

3.2 读取txt文件

with open(fname,'wb') as f:

直接按照正常方式读取即可

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值