文件操作
一、操作CSV文件:
1.1. 文件保存:
有时候我们有了一个数组,需要保存到文件中,那么可以使用np.savetxt
来实现。相关的函数描述如下:
np.savetxt(frame, array, fmt='%.18e', delimiter=None)
* frame : 文件、字符串或产生器,可以是.gz或.bz2的压缩文件
* array : 存入文件的数组
* fmt : 写入文件的格式,例如:%d %.2f %.18e
* delimiter : 分割字符串,默认是任何空格
以下是使用的例子:
a = np.arange(100).reshape(5,20)
np.savetxt("a.csv",a,fmt="%d",delimiter=",")
1.2. 读取文件:
有时候我们的数据是需要从文件中读取出来的,那么可以使用np.loadtxt
来实现。相关的函数描述如下:
np.loadtxt(frame, dtype=np.float, delimiter=None, unpack=False)
* frame:文件、字符串或产生器,可以是.gz或.bz2的压缩文件。
* dtype:数据类型,可选。
* delimiter:分割字符串,默认是任何空格。
* skiprows:跳过前面x行。
* usecols:读取指定的列,用元组组合。
* unpack:如果True,读取出来的数组是转置后的。
二、np独有的存储解决方案:
numpy
中还有一种独有的存储解决方案。文件名是以.npy
或者npz
结尾的。以下是存储和加载的函数。
- 存储:
np.save(fname,array)
或np.savez(fname,array)
。其中,前者函数的扩展名是.npy
,后者的扩展名是.npz
,后者是经过压缩的。 - 加载:
np.load(fname)
。
三、CSV文件操作:
3.1. 读取csv文件:
import csv
with open('stock.csv','r') as fp:
reader = csv.reader(fp)
titles = next(reader)
for x in reader:
print(x)
这样操作,以后获取数据的时候,就要通过下表来获取数据。如果想要在获取数据的时候通过标题来获取。那么可以使用DictReader
。示例代码如下:
import csv
with open('stock.csv','r') as fp:
reader = csv.DictReader(fp)
for x in reader:
print(x['turnoverVol'])
3.2. 写入数据到csv文件:
写入数据到csv文件,需要创建一个writer
对象,主要用到两个方法。一个是writerow
,这个是写入一行。一个是writerows
,这个是写入多行。示例代码如下:
import csv
headers = ['name','age','classroom']
values = [
('zhiliao',18,'111'),
('wena',20,'222'),
('bbc',21,'111')
]
with open('test.csv','w',newline='') as fp:
writer = csv.writer(fp)
writer.writerow(headers)
writer.writerows(values)
也可以使用字典的方式把数据写入进去。这时候就需要使用DictWriter
了。示例代码如下:
import csv
headers = ['name','age','classroom']
values = [
{"name":'wenn',"age":20,"classroom":'222'},
{"name":'abc',"age":30,"classroom":'333'}
]
with open('test.csv','w',newline='') as fp:
writer = csv.DictWriter(fp,headers)
writer.writerow({'name':'zhiliao',"age":18,"classroom":'111'})
writer.writerows(values)