Txt文件存储
将数据保存为txt文件格式是最为简单的。
with open('test.txt','w',encoding='utf-8') as file:
data = '保存文件'
file.write(data+‘\n’) #写入文件 可以添加写入的'\n'.join([字段])
file.close() # 关闭
JSON文件存储
可以调用 JSON loads()方法将JSON文本字符串转为JSON对象,可以通过 dumps()方法将 JSON 对象转为文本字符串,
import json
with open ('data.json','w',encoding='utf-8') as file:
#如果想保存为JSON格式的,可以在加一个参数indent=2即可。
file.write(json.dumps(data,indent=2))
file.close() # 关闭
如果出现不显示中文字符,还需要指定参数ensure_asci=False,json.dumps(data,indent=2,ensure_ascii=False)
CSV文件存储
CSV(Comma-Separated Values),中文可成为逗号分隔值或字符分隔值,其文件以纯文本形式存储表格数据。Python标准库自带CSV模块,不用自行安装,直接导入即可。
import csv
with open('csv_test.csv','w',newline = '') as csvfile:
#将文件加载到CSV对象中
write = csv.writer(csvfile)
#写入一行表头数据
write.writerow(['姓名','年龄','电话'])
#多行数据写入
data = {('zhangsan','15','1385210234'),('wangsi','25','13812350360')}
#关闭CSV对象
write.writerows(data)
使用pandas读取的话,很方便
import pandas as pd
df = pd.read_csv('csv_test.csv',encoding ='gb2312')
print(df)
值得注意的是这里可能会出现乱码,需要指定字符编码,csv文件的编码为gb2312或utf-8时,指定编码格式pd.read_csv(name, encoding=‘gb2312’)可解决乱码问题;如果编码格式为utf-8,则另存为txt文件,pd.read_table(name) 不用指定编码格式,也可以解决乱码问题。
Excel文件存储
python操作Excel时,对应的有不同的版本支持库,若Excel为2003时,需选择pyExcelerator;若Excel为2007时,需选择openpyxl;而xlrd库支持所有版本的数据读取,xlwt库支持所有版本的数据写入。
所以,考虑到兼容性一般都选择使用 xlrd和xlwt,Windows环境CMD下直接使用pip安装即可。
pip3 install xlrd
pip3 install xlwt
将数据写入到Excel是比较复杂的,有格式以及公式、插入图片等的功能,下面直接看写入Excel的语法。
import xlwt
#新建一个Excel文件
wb = xlwt.Workbook()
#在新建的文件中新建一个名为Python的工作簿
ws = wb.add_sheet(‘Python’,cell_overwrite_ok=True)
#定义字体对齐方式对象
alignment = xlwt.Alignment()
#设置水平方向
#HORZ_GENERAL,HORZ_LEFT,HORZ_CENTER,HORZ_RIGHT,HORZ_FILLED
#HORZ_JUSTIFIED,HORZ_CENTER_ACROSS_SEL,HORZ_DISTRIBUTED
alignment.horz = xlwt.Alignment.HORZ_CENTER
#设置垂直方向
#VERT_TOP,VERT_CENTER,VERT_BOTTOM,VERT_JUSTIFIED,VERT_DISTRIBUTED
alignment.vert = xlwt.Alignment.VERT_CENTER
#定义格式对象
style = xlwt.XFStyle()
style.alignment = alignment
#合并单元格write_merge(开始行,结束行,开始列,结束列,内容,格式)
ws.write_merge(0,0,0,5,'Python数据存储',style)
#写入数据we.write(行,列,内容)
for i in range(2,7):
for k in range(5):
ws.write(i,k,i+k)
#Excel公式xlwt.Formula
ws.write(i,5,xlwt.Formula('SUM(A'+srt(i+1)+ ':E'+str(i+1)+')'))
#wb.save('file.xls')
#插入bmp格式图片,insert_bitmap(img,x,y,x1,y1,scale_x=0.8,scale_y=1)
#x表示行数,y表示列数,x1表示相对原来位置向下偏移的像素,y1表示相对原来位置像右偏移的像素,scale_x、scale_y表示缩放比例
ws.insert_bitmap('G:\\img.bmp',9,1,2,2,scale_x=0.3,scale_y=0.3)
#保存文件
wb.save('file.xls')
读取数据需要第三方库 xlrd 来实现,具体代码如下。
import xlrd
wb = xlrd.open_workbook('file.xls')
#获取工作簿的zongshu
ws_count = wb.nsheets
print('Sheets总数:',ws_count)
#通过索引顺序获取Sheets
#ws = wb.sheets() [0]
#ws = wb.sheet_by_index(0)
#通过Sheets名获取Sheets
ws = wb.sheet_by_name('Python')
#获取整行的值,以列表形式返回
row_value = ws.row_values(3)
print('第四行数据为:',row_value)
#获取整列的值,以列表形式返回
row_col = ws.col_values(3)
print('D列的数据为:',row_col)
#获取所有的lie
nrows = ws.nrows
ncols = ws.ncols
print('总行数为:',nrows,'总列数为:',ncols)
#获取某个单元格内容cell(行,列)
cell_F3 = ws.cell(2,5).value
print('F3单元格内容为:',cell_F3)
#使用行列索引获取某个单元格的内容
row_F3 = ws.row(2)[5].value
col_F3 = ws.col(5)[2].value
print('F3单元格的内容为:',row_F3, '\n' 'F3单元格的内容为:',col_F3)
符号 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |