专栏首页软件测试小助手python中常见关于Excel表格读写操作

python中常见关于Excel表格读写操作

最近在写项目,刚好要运用到excel表格的一些读写,顺便总结一下我以前学过的几个关于表格的操作。在写项目中,经常会见到页面中数据导出到表格中,同时,也会有经常在表格中填写测试用例,然后获取数据来做自动化测试的情况,那就我目前会的几种做一个总结吧~

篇幅较长,满满的干货~

1、csv文件读写

csv文件是我最开始接触的表格文件的读写文本类型,但是严格意义上来说csv文件就是一个纯文本文件,只不过支持通过表格打开,而且csv文件中的标点符号一定要是英文的格式。

1、读取csv文件中内容【可以自己手动创建一个csv文件,逗号分隔】

import csv
import codecs
# 创建一个csv文件,并填入内容
def load_csv():
  with open('a.csv','a') as file:
     f=csv.reader(file)
     print(list(f))   # 直接打印f,是一个object对象
  file.close()  # 关闭文件

2、写入到csv文件中

def load_csv():
    header = {'title', 'content'} # 表头数据
    data1 = ['test1', 'test2']  # 单行数据
    data2 = [['test1', 'one'], ['test2', 'two']] # list数据
  with open('b.csv', 'w', newline='') as file:
      writer = csv.writer(file)
      writer.writerow(header)
      writer.writerow(data1)  # 写入单行
      writer.writerows(data2) # 写入多行

3、读取文件DictReader方法【读取结果为字典类型】

# 打印出来的数据是字典类型,表格的表头为键、每一行的值为值,值有几行就打印几个字典
def read_csv():
    with open('b.csv', 'r') as file:
        f = csv.DictReader(file)
        for i in f:
            print(i['title'], i['content'])

4、写入文件DictWriter方法【写入内容为字典类型】

def load_csv():
    datas = {'title': '1', 'content': '测试test1'}
    f = codecs.open('b.csv', 'w', 'gbk')
    writer = csv.DictWriter(f, fieldnames=['title', 'content'])
    writer.writeheader()
    writer.writerow(datas)  # 写入一行
    writer.writerows(datas)  # 写入多行

2、openpyxl对Excel文件读写

还记得以前写过的3分钟爬取微博热搜么?我们就结合这个来做文件的读写。

常用知识点:

# 创建一个excel表格
wb = openpyxl.Workbook()
# 给表格添加sheet名称
wb.create_sheet(index=0, title='test1')
# 保存表格
wb.save('test_openpyxl.xlsx')

1、读取微博爬取的内容写到表格

# 获取微博热搜内容
def get_text():
    list_n = ['排行']
    list_r = ['热搜名']
    url = 'https://s.weibo.com/top/summary'
    header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
                      '(KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
    }
    response = requests.get(url=url, headers=header)
    if response.status_code == 200: #判断接口请求是否正确
        html = etree.HTML(requests.get(url, headers=header).text) # 构造XPath解析对象
        hot_search_name = html.xpath('//td[@class="td-02"]/a/text()')  # 热搜名 字符串列表
        hot_search_rank = html.xpath('//td[@class="td-01 ranktop"]/text()')  # 热搜排行
        hot_search_name_true = hot_search_name[1:]  # 只取热搜排行,不取置顶热搜
        for i in range(0, 10):
            s = hot_search_rank[i]  # 排行和热搜组合
            r = hot_search_name_true[i]
            list_n.append(s)
            list_r.append(r)
    else:
        print('wrong')
    return zip(list_n, list_r)

# 将微博文件内容到表格
def get_website_to_excel():
    result = get_text() # 微博内容结果
    wb = openpyxl.Workbook()
    sheet = wb.active  #获取初始的sheet
    count = 1
    for inner in result:
        sheet.cell(row=count, column=1).value = inner[0]
        sheet.cell(row=count, column=2).value = inner[1]
        count += 1
    wb.save('微博.xlsx') # 保存到当前目录下

2、读取表格内容

def get_excel_content():
    # 打开工作簿
    lw = openpyxl.load_workbook('test_openpyxl.xlsx')
    # 选取表单
    sheet_name = lw.active
    # 获取第一行第一列的数据 A1
    #  ce = sheet_name.cell(row=1, column=1)
    #  print(ce.value)
    # 按行读取数据 去表头
    print(list(sheet_name.rows)[1:])
    for cases in list(sheet_name.rows)[1:]:
        rank = cases[0].value
        name = cases[1].value
        print(rank, name)

3、xlrd 和 xlwt

1、读取Excel中的数据

import xlrd
import xlwt

def get_excel():
    # 获取数据
    data = xlrd.open_workbook('微博.xlsx')
    # 获取sheet
    # table = data.sheet_by_name('test') # 通过sheet名称获取数据
    table = data.sheet_by_index(0)   # 通过sheet索引获取数据
    # 获取总行数
    rows = table.nrows
    # 获取总列数
    cols = table.ncols
    # 获取某个单元格的数据
    cell_value = table.cell(0, 1).value
    print(cell_value)
    # 获取excel表格所有数据
    for i in range(rows):
        for j in range(cols):
            print(table.cell(i, j).value)

2、写入内容到Excel表格中

def write_excel():
    data = [['title', 'content'], ['test1', 'test2']]
    # 创建excel
    wb = xlwt.Workbook()
    # 创建excel中的sheet
    ws = wb.add_sheet('test')
    for i in range(len(data)):
        for j in range(len(data[i])):
           ws.write(i, j, data[i][j])
    # ws.write(0, 0, 'hahah')
    wb.save('test.xls')

总结要点:

1、读写文件的时候,记得要把文件关掉

2、输入中文时,乱码的话,可以导入codes包,然后设置中文格式为gbk,可以看到不少乱码了。

3、writerow和writerows的区别:writerow写入一行数据,writerows写入多行数据,而且写入多行数据的类型DictWriter字典类型,writer是list类型【有不对的欢迎指出来】

4、xlrd:对xls、xlsx、xlsm文件进行读操作–读操作效率较高

5、xlwt:对xls文件进行写操作–写操作效率较高,但是不能执行xlsx文件

6、openpyxl:对xlsx、xlsm文件进行读、写操作–xlsx写操作推荐使用,不能写xls文件

本文分享自微信公众号 - 软件测试小助手(gh_2282fef3410c),作者:小雯子打豆豆

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PHP5.6读写excel表格文件操作示例

    本文实例讲述了PHP5.6读写excel表格文件操作。分享给大家供大家参考,具体如下:

    砸漏
  • Python中列表list常见操作

        切片主要就是针对获取列表中部分或者单个元素的方法,通过下标访问列表中的元素,下标从0开始计数

    py3study
  • python中列表的常见操作

    黑白格
  • Element-UI中关于table表格的操作

    https://element.eleme.cn/#/zh-CN/component/table#table-column-scoped-slot

    魏晓蕾
  • 用Python处理Excel文件

    我主要尝试了四种工具,在此并不会给出他们的排名,因为在不同的应用场景下,做出的选择会不同。

    py3study
  • Python 使用 Xlrd/xlwt

    Python 处理 Excel,可以使用 xlrd/xlwt 2个模块,使用简单特好上手。

    py3study
  • Python自动化办公之Excel报表自动化指南!全文3W字

    来源:https://blog.csdn.net/u014779536/article/details/108182833

    统计学家
  • 最全总结 | 聊聊 Python 办公自动化之 Excel(上)

    但是,经常会遇到一些重复繁琐的事情,这时候手工操作显得效率极其低下;通过 Python 实现办公自动化变的很有必要

    AirPython
  • Python办公自动化之Excel做表自动化:全网最全,看这一篇就够了!

    官方文档:https://xlrd.readthedocs.io/en/latest/

    Python小二
  • Python读写Excel表格,就是这么

    于是我到处查找资料,基本解决了日常所需,终于算是完成了任务,因此撰写此文就算是总结吧,主要记录使用过程的常见问题及解决。

    py3study
  • 运营的Python指南 - Python 操作Excel

    这是一份写给运营人员的Python指南。本文主要讲述如何使用Python操作Excel。完成Excel的创建,查询和修改操作。 相关代码请参考 https://...

    AnRFDev
  • 向Excel说再见,神级编辑器统一表格与Python!

    是的,在一个界面上同时展示可视化表格与代码,而且同时通过表格与代码修改数据,这不就是 Python 与 Excel 的结合吗?

    1480
  • 这个神级编辑器给 Excel 加上了 Python 功能!

    很多开发者说自从有了 Python/Pandas,Excel 都不怎么用了,用它来处理与可视化表格非常快速。但是这样还是有一大缺陷,操作不是可视化的表格,因此对...

    统计学家
  • 推荐一款数据处理的神级工具,完全结合了Python和Excel的优势

    是的,在一个界面上同时展示可视化表格与代码,而且同时通过表格与代码修改数据,这不就是 Python 与 Excel 的结合吗?

    double
  • 向Excel说再见,神级编辑器统一表格与Python

    是的,在一个界面上同时展示可视化表格与代码,而且同时通过表格与代码修改数据,这不就是 Python 与 Excel 的结合吗?

    机器之心
  • 神级编辑器Grid Studio统一Excel表格与Python

    是的,在一个界面上同时展示可视化表格与代码,而且同时通过表格与代码修改数据,这不就是 Python 与 Excel 的结合吗?

    小草AI
  • 向Excel说再见,神级编辑器统一表格与Python

    是的,在一个界面上同时展示可视化表格与代码,而且同时通过表格与代码修改数据,这不就是 Python 与 Excel 的结合吗?

    CDA数据分析师
  • 向Excel说再见,神级编辑器统一表格与Python

    很多开发者说自从有了 Python/Pandas,Excel 都不怎么用了,用它来处理与可视化表格非常快速。但是这样还是有一大缺陷,操作不是可视化的表格,因此对...

    诸葛青云
  • 向Excel说再见,神级编辑器统一表格与Python

    很多开发者说自从有了 Python/Pandas,Excel 都不怎么用了,用它来处理与可视化表格非常快速。但是这样还是有一大缺陷,操作不是可视化的表格,因此对...

    Python数据科学

扫码关注云+社区

领取腾讯云代金券