数据持久化(一)

1.文本文件
(1)
文本文件的打开与关闭
1.file=open()
我们通过ctrl+B的方法查看open()函数的参数有哪些

def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):

上面的函数参数中常用的有
file:文件路径字符串 。有绝对路径和相对路径两种方法
mode:读写的形式。对于文本文件主要有以下形式:
在这里插入图片描述
通过此方法打开文件,在操作完毕后需要通过close()函数关闭
2.with open()
通过此方法打开文件,退出程序后文件自动关闭。
(2)文件的写入
1.write()方法写文件
特点:
i:按照顺序依次写入
ii:连续写入的字符串不会添加任何分隔符
2.writelines()方法写文件
i:可以以序列的形式接受多个字符串作为参数,一次性写入多个字符串。
ii:writelines()方法参数可以是列表,集合,元组,字典
(3)文件的读取
1.read()方法
特点
i:read()方法读出文件所有内容作为一个字符串返回
2.readline()方法
特点
i:读出文件当前行,并以字符串的形式返回
3.readlines()方法
特点
i:以列表的形式返回整个文档的内容,一行对应一个列表元素

1.excel文件
对于excel 文件的操作要导入第三方库,个人比较喜欢openpyxl这个第三方库,安装方法:
pip install openpyxl
(1)创建表格
import openpyxl
(2)创建一个工作簿
workbook=openpyxl.Workbook()
(3)创建一张表
sheet1=workbook.create_sheet(‘表1’)
(4)保存
workbook.save('示例.xlsx‘)
(5) 单元格属性
sheet1.cell()
具有3个属性分别为:
i:row 行
ii:column 列
iii:value 值
(6)写入数据
sheet1.cell(row=1,column=1).value=‘A1’
sheet1.cell(row=1,column=2).value=‘B1’
在这里插入图片描述
sheet1.append([1,2,3,4,5])
在这里插入图片描述
例子1:九九乘法表写入excel:

import openpyxl
workbook=openpyxl.Workbook()
sheet2=workbook.create_sheet('表1')
for i in range(1,10):
    for j in range(1,i+1):
        print(f'{j}*{i}={i*j}',end='\t')
        sheet2.cell(row=i,column=j).value=f'{j}*{i}={i*j}'
    print()
workbook.save('示例.xlsx')

结果如下:
在这里插入图片描述
(7) 文件读取
workbook=openpyxl.load_workbook(‘示例.xlsx’)

例子2:作业统计
下面文件夹为及时交作业的同学,请统计他们交作业的情况:
(前面的两位数指的是学号,后面两位数指的是第几次作业)
在这里插入图片描述
下面上代码:

import os
import re
import openpyxl
wb=openpyxl.Workbook()
sheet=wb.active
filename=os.listdir('作业提交')
#print(filename)
for file in filename:
    result=re.match('(\d{1,2})-(\d{1,3})',file)
    #print(result)

    col=int(result.group(2))
    row=int(result.group(1))
    #print(row,col)
    sheet.cell(row=row,column=col).value=1
wb.save('作业提交.xlsx')

统计结果如下:
在这里插入图片描述
按时提交的放在1个文件夹,补交的放在另外一个文件夹,可以将及时交的赋值为1,补交的赋值为2.这样就能清楚地看到同学们的作业提交情况,由于上面只是例子,只例举了4为同学,若几百位同学的话,代码的优越性应该能够得到体现。

例子3:爬取税务局的信息并保存到excel中
直接上代码了

import requests
import time
import openpyxl
url='http://www.chinatax.gov.cn/api/query?siteCode=bm29000fgk&tab=all&key=9A9C42392D397C5CA6C1BF07E2E0AA6F'
def get_data(page):
    data={
    'timeOption':'0',
    'page':str(page),
    'pageSize':'10',
    'keyPlace':'1',
    'sort':'dateDesc',
    'qt':'*',
    }
    return data
headers={
'Cookie':'yfx_c_g_u_id_10003701=_ck20071510563415137598437311022; yfx_f_l_v_t_10003701=f_t_1594781794510__r_t_1594781794510__v_t_1594781794510__r_c_0; toolsStatus=1; _Jo0OQK=4364B4F32E14F06C072590E96A57937BCEE455C619A3A5D9E18CC2274F802DBBD58C0016877FC72F84397C84E1B98C35714CCC79013C9FEA7E6635306F3BAD1621234275DAD340EB4DDFFF13AA80B4DD4EFFFF13AA80B4DD4EF5FF0BAB2626C46A9B39E6D4B415570C1GJ1Z1eA==; SearchHistory=%25E5%25A2%259E%25E5%2580%25BC%25E7%25A8%258E%252C%25E6%25B6%2588%25E8%25B4%25B9%25E7%25A8%258E%252C; CPS_SESSION=6C3F30C07B3981650DC3BB0A753F91E3',
'Host':'www.chinatax.gov.cn',
'Origin':'http://www.chinatax.gov.cn',
'Referer':'http://www.chinatax.gov.cn/chinatax/n810341/n810825/index.html?title=',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36',
}
def save_data(result,sheet1):
    resultlist=result['resultList']
    for r in resultlist:
        #print(r)
        sheet1.append([r['dreTitle'],r['publishTime']])


wb=openpyxl.Workbook()
sheet1=wb.create_sheet('增值税')
for page in range(1,91):
    data=get_data(page)
    response=requests.post(url=url,data=data,headers=headers)
    print('**************{}**********'.format(str(page)))
    #print(response.json())
    result=response.json()
    save_data(result,sheet1)
    wb.save('税务局.xlsx')
    time.sleep(3)

小技巧:

在这里插入图片描述
添加data和headers里的参数里的引号你还在手动加蛮?正则直接替换它不香蛮?
(我用的是pycharm) 键盘上ctrl +r输入替换规则可以批量替换,真香。

看看爬取结果:
在这里插入图片描述
在这里插入图片描述
总共爬取了890条数据,爬取得内容还可以丰富,后续还可以继续做数据分析,读者自行尝试吧,主要是记录excel数据的储存。
今天的记录就到这吧,后续二再更新json和csv的文件操作。希望大家暑假愉快!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值