今日份超详细的解读,Excel文件基础操作,让你以学就会。

写这个的原因是,一位群友问了很久,然后网上的教程写的又不是很详细,看的有些犯迷糊,所以我今日份写一份超详细的基本操作,让你打下良好的基础。

今天我们来讲讲Excel的不同 文件格式的一些操作:

目录

1、前言介绍

2、txt文本

2.1、read()读取所有的文本内容

2.2、readline()读取一行

2.3、readlines() 读取文件中所有文本的内容

3、xlrd及xlwt

3.1、写入操作

3.2、读取操作

4、openpylx

5、yaml文件

6、结束语


1、前言介绍

这四种文件的基本操作还是很重要的,废话不多说我们直接进入正题!!!

我们先了解一个fail函数的使用方法:

对于file文件的使用流程:打开文件--读或者写--关闭文件

1. 打开文件:f=open(文件名,模式)

2. 写:f.write(写入的文本内容)

3. 读:f.read([字符数量]) f.readline() f.readlines()

4. 关闭文件:f.close()

这里的模式常用的有:

# "r" - 读取 - 默认值。打开文件进行读取,如果文件不存在则报错。
# "a" - 追加 - 打开供追加的文件,如果不存在则创建该文件。
# "w" - 写入 - 打开文件进行写入,如果文件不存在则创建该文件。
# "x" - 创建 - 创建指定的文件,如果文件存在则返回错误。

还有就是一些不是常用的:

r+打开一个文件用于读写(指针在文件开头) w+打开一个文件用于读写
a+打开一个文件用于读写 rb二进制格式打开用于只读
wb二进制格式写入 ab二进制格式打开用于追加

上面表格参考为辅!

先来看看普通的文本操作

# 记得加上,encoding='utf-8'
file = open(r"text_make")
#读取两个字符,python中一个汉字一个字符而不是一个汉字两个字符
num = file.read(2)
print(num)

这里的r是转义字符,有时候写入绝对路径的时候会有字符路径错误的现象!如果项目中没有文件,使用方法的时候python会帮你自动创建一个哦!小北这里的文件是没加后缀名的,有些细心的小伙伴就会发现,为什么不加,不加不会报错吗,这个跟版本有关系吧,项目中如果文件加了后缀名,小伙伴们就记得加上哦,小北这里是没有的,所以加了反而报错!!!后面小北介绍的项目是加后缀名的哦。

介绍介绍read以及其他的几个读的操作:

2、txt文本

我们一一看来,

2.1、read()读取所有的文本内容

file = open(r"text_make")   # 记得加上,encoding='utf-8'
num = file.read()
print(num)

当python提示你转义问题的时候,记得加上我备注的格式encoding='utf-8',read()里面不写参数的时候就是读取全文,写入参数,按字符串形式读取,看我们上面的例子,read(2),读取两个字符,这里是读取全文,小北的这个txt文件是自己随便写的内容哦!

2.2、readline()读取一行

file = open(r"text_make")
#读取一行,想要读取多行就得写多少次
read_num = file.readline()
#...
# 使用type可以查看打印的类型
print(read_num,type(read_num))
#readline,用法跟read相类似,可以添加字符长度

用法其实先类似,没有太大的差别,小伙伴记得机器创建一个文本跟着操作一下

想要读取全文,不想一直read_num = file.readline()下去,我们可以使用for循环!

file = open(r"text_make")
for read_num in range(10):print(file.readline())
# 关闭文件释放资源
file.close()

这里的range(10)是行数哦,当文本内容不足十行,循环就停止了

2.3、readlines() 读取文件中所有文本的内容

file = open(r"text_make")   # 记得加上,encoding='utf-8'
read_num1 = file.readlines()
#想要不以列表的形式输出,就使用for循环遍历吧
# for read_num2 in read_num1:
print(read_num1)
# 关闭文件释放资源
file.close()

读取文件中所有的文本内容,如果我们前面使用了read或者readline,该方法就会接着读取后面的内容,前面的内容就不会再读取了哦,小伙伴注意了。上面也给出了另种方法打印哦小伙伴自己尝试一下。

小北这边给出for循环打印的结果图哦:

注:记得使用变量去接收打开文本方法的,都需要加上变量.close(),打开文件后关闭文件,释放内存资源

我们看看txt文本中的写、追加以及读写操作,小伙伴一定要一个个自己动手尝试!!!

# w,a的属性
# 对于不存在的文件自动会创建一个
mini = open('china_name','w',encoding='utf-8')
mini.write('你好,python')#写入后会自动保存
# 如果你再次以w的放方式写入,之前的内容就会被刷新掉,显示当前的内容,是一种覆盖写,覆盖掉原来的内容
mini.write('你好,Java')# 追加写
mini = open('china_name1','a',encoding='utf-8')
mini.write('你好,python')#写入后会自动保存
mini.write('我来了')
mini.close()# 读写操作,先读后写,写入了之后是在文本的最后面,不读直接写是会写在文本的最前面
mini = open('china_name1','r+',encoding='UTF-8')
a = mini.read()
print(a)
#换行,使用换行符可以输入多行文字
mini.write('\n每个人身上都有毛毛')
mini.close()

这里,小北一下子介绍了三种方式,小伙伴可要看明白了,其中的操作,小伙伴一定要自己尝试,不然是体会不了的哦。

小北的这个效果图是执行了两遍的效果图哦,在这里的小北需要说明的一点就是,其实追加写跟写入区别只有一点,自己尝试过的小伙伴肯定就一下子明白了,追加写不管有么有内容,都可以一直在文本的后面继续写入内容,write写入呢,会把原来写入的内容覆盖掉。

小北介绍一种不需要写close的打开文本方法哦

 with open('路径','模式) as 变量名:代码块
with open('china_name1','r+',encoding='UTF-8') as reading:# 读取行数read_open = reading.readline()# 只打印一行print(read_open)# rd_ing = reading.write('本次课程') write不支持写了就输出# print(rd_ing)for red in reading:print(red)

看这个格式,这里呢,我注释了一个打印方法,因为不支持这样的写法,虽然可以输出,但是是错误内容哦,不是想要的内容,所以这里我们使用了for循环的方法进行输出。

接下来的才是正题菜,易理解!!!

小北现在这说一下excel的几种格式,然后大多数以代码格式分享,加上注释,帮助小伙伴快速理解其中

常用的库,xlrd(read),xlwt(write),openpyxl(支持读写修改,但是不支持xls格式的excel文档,支持新版本的xlsx)

至于导入包这个操作,我想应该不需要我多说了吧,实在不会的直接在pycharm里面import 包名,指定红色部分直接下载就好。

import xlwt
import xlrd
import openpyxl
import yaml

3、xlrd及xlwt

1. xlrd - 读取 Excel 文件,支持.xls和.xlsx格式

2. xlwt - 写入 Excel 文件,只支持.xls格式

3. openpyxl - 既可以读文件、也可以写文件、也可以修改文件;但是,openpyxl 库不支 持 xls 格式的Excel文档,如果要读写xls格式的文档,可以使用 Excel 进行相应的格式转 化,或者使用xlwt库来进行写的操作。

3.1、写入操作

我们先来看看xlrd格式的以及xlwt格式的,这两个一个是读,一个是写,我们在操作的时候可以一起使用的哦,首先我们看看写入的操作:

# 实例化类,建立好表单,创建文件名为exl1
exl1 = xlwt.Workbook()
# 在表中创建一个表单,并修改表单的名字,给定一个变量为sh1
sh1 = exl1.add_sheet('userinfo')
# 写入数据,默认坐标位置是(0,0),A列表第一行第一列坐标为(0,0),B列表为第二行,我想在第一列输出那么就是(0,1)
sh1.write(0, 0, 'username')
sh1.write(0, 1, 'password')
# 保存这个文件到指定位置,默认位置也是可以的,保存在项目中
exl1.save('D:\python练习\log.xls')

我在这里首先自己创建了一个excel文件哦,在这里呢,我们需要解释一下了xls是老版本的excel,xlsx是新版本的,所以注意文件后缀明哦,读取操作这个实例化对象的操作都是支持的。上述是读取文件信息,读取后发现什么也没有,接下来我们就是要写入点东西了。

看图小伙伴就懂了吧,以username为坐标(0,0),往下就是(1,0)以此类推,password坐标为(0,1)往下就是(1,1)依次类推写入

不想每次手动写入,我们就用循环来写吧。

# 实例化类,建立好表单,创建文件名为exl1
exl1 = xlwt.Workbook()
# # 在表中创建一个表单,并修改表单的名字,给定一个变量为sh1
sh1 = exl1.add_sheet('userinfo')
# # 写入数据,默认坐标位置是(0,0),A列表第一行第一列坐标为(0,0),B列表为第二行,我想在第一列输出那么就是(0,1)
sh1.write(0, 0, 'username')
sh1.write(0, 1, 'password')
#定义一个列表
write_two = ['zhangsan','123456']
#使用for循环介入,这里len()是计算长度,因为range里面不能接入列表,所以需要用len返回长度给到range,并使用索引值来取值
for i in range(len(write_two)):#第一行,第i个值,这里有0跟1,然后再写入第i个位置的字符串sh1.write(1,i,write_two[i])
# 保存excel表格,到指定的位置
exl1.save('D:\python练习\log.xls')

可能有些小伙伴对这个sh1.write(1,i,write_two[i])抱有很大的一问,=_=

1为我们默认的第一行,i为我们所需要的位置信息,从第0列开始填充,write_two[i],这个就是列表取值了,索引值哦,所以打xls里面就是(1,0)位置写列表中的zhangsan,以此来的哦。

3.2、读取操作

#读取操作,读写可以一起的
read_fail = xlrd.open_workbook('D:\python练习\log.xls')
#读取表单操作
us1 = read_fail.sheet_by_name('userinfo') #表单名字读取
us1 = read_fail.sheet_by_index(0) #表单索引读取,第一个表单为0以此类推
# 读取属性信息,总行数总列数
print(us1.nrows) #行
print(us1.ncols) #列
print(us1.name) #表单名字

这里我们介绍了读取属性信息以及两种表单名字读取,其实第一种更偏向于核实表单是否是这个名字哦!

另外再介绍一下读取表单的一些方法:

读取一行    row1 = sh1.row_values(0)
读取一列    col1 = sh1.col_values(0)
读取一个单元格 cell1 = sh1.cell_value(0,0)或者cell1 = sh1.cell(0,1).value
# 单元格信息读取,坐标形式读取
a1 = sh1.cell_value(0,0)
#a1 = sh1.cell(0,1).value
print(a1)
#读取一行,以列表的形式打印,索引的形式读取
row_1 = sh1.row_values(1)
print(row_1)
#读取一列,索引值的方式进行读取
cell1 = sh1.col_values(1)
print(cell1)

这里是跟上面的读取例子其实是一体的,小北将他们拆分了而已。

小北这里贴了两张图,以便于小伙伴理解哦!!!

4、openpylx

它的操作方式与上面两种还是有所不同的,使用的方法及操作都会有所不同,首先准备一个文件哦,写入一些数据

1、打开一个文件(.xlsx文件) book = openpyxl.load_workbook(文件名)

2、使用sheet工作表 sh1 = book.get_sheet_by_name('Sheet1') 或者sh1=book.active

3、单元格写入 sh1['C2'] = '张三' 或者 sh1.cell(1,3).value= 'lisi' 行和列的索引值是从1开始的

4、整行写入['张三','李四','wangwu','王五']

ex1 = openpyxl.load_workbook(r'D:\python练习\api.xlsx')
num1 = ex1.get_sheet_by_name('Sheet1')
# 这个是默认打开第一个表单
# ex1.active
print(num1.max_row)  # 总行数
print(num1.max_column) # 总列数
# # 写入pass,fail
# num1['F2'] = 'PASS'
# 用坐标的位置写入
num1.cell(2,6).value = 'PASS'
# num1['F3'] = 'FAIL'
num1.cell(3,6).value = 'PASS'

这里我们 先使用指定的方法读取这个文件,然后写入两个PASS字符串

# 写入整行的数据,openpylx会自动更具excel表格进行数据写入
new1 = ['张三','李四','wangwu','王五']
num1.append(new1)
#保存
ex1.save(r'D:\python练习\api.xlsx')

然后我们定义一个列表,使用列表的方法将列表里面的值添加进小北的这个文件,这里openpylx有一个很不错的功能就是会自动更具excel表格的形式,使用列表里的值进行填充写入哦。

最后呈现这样的啦,这里小北是随意输入的数据哦。

接下来我们看看读取的操作

1:打开一个文件(.xlsx文件) book = openpyxl.load_workbook(文件名)

2:使用sheet工作表 sh1 = book.get_sheet_by_name('Sheet1') 或者sh1=book.active

3:读取内容 按单元格读取 cell1 = sh1['A1'].value 或者 cell2= sh1.cell(1,2).value 行和列的索引值是从1开始的 按行读取 for row in sheet.iter_rows(min_row=1,max_row=3): for cell in row: print(cell.value,end= '\t') print()

按列读取 for row in sheet.iter_rows(min_col=1,max_col=3): for cell in row: print(cell.value,end= '\t') print()

#读的操作
look = openpyxl.load_workbook(r'D:\python练习\api.xlsx')
sh1 = look.active
# 按单元格读取
A1 = sh1['A1'].value
print(A1)
# 如果没有value属性,读取的就只是单元格
# 用坐标的方式读取第一行第二列
A1 = sh1.cell(1,2).value
print(A1)

这里读取的时候坐标原始值就是(1,1)开始了哦。不是(0,0)了。这个操作也是上面的同一个文件哦

看下面这个循环操作:

# 使用for循环配合max_row直接拿取前几行内容,可以结合max_col= ,min_col= 使用,限制行跟列打印
for i in sh1.iter_rows(max_row=1):  for r in i:                     print(r.value)

这里我们看到新的东西max_row=1,这个是最大行数为1的意思,max_col= 最大列数,min_col=最小列数,min_row = 最行数,可以通过这样的配合,来限制打印内容哦。

#就是输出第一行的每一个单元格内容,可以使用min_row= ,来限制打印函数,最小从第一行开始,最大到第三行结束
for i in sh1.iter_rows(min_row = 1,max_row = 3):for r in i:print(r.value,end= '\t')print()

最后得到的效果就是:

对比一下写入操作的时候的那一张excel图哦!!

5、yaml文件

它有很多规矩:

1. 大小写敏感

2. 使用缩进表示层级关系

3. 缩进时不允许使用Tab键,只允许使用空格。

4. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

5. #表示注释,从这个字符一直到行尾,都会被解析器忽略,这个和python的注释一样

关于它的介绍

1. 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

2. 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)

3. 纯量(scalars):单个的、不可再分的值。字符串、布尔值、整数、浮点数、Null、时间 注意:yaml文件的键和值之间一定要多加一个空格,不然语法错误!

这里我就不一一介绍了,直接上图吧:这里注意我的格式写法,空格在哪,以及yaml文件中列表的表现 形式:

进入正题:

打开yaml文件:with open(文件名,模式) as f(变量名):

读取yaml文件内容 msg=yaml.load(f)

load(stream)方法,将yaml文件转为python数据类型,load参数是一个文件流

#默认属性就是读,这里未接后缀名,根据版本不同,有的需要添加,还有就是转义字符
with open('D:\python练习\login.yaml',mode='r',encoding='UTF-8') as d:names = yaml.load(d) #读取文件,load是一个文件流,将yaml转为python的数据类型print(names)
# 输出对应的值
user1 = names['case1']['user1']
print(user1)
pw1 = names['case1']['pwasswd1']
print(pw1)

这里有一个报红,不影响我们操作

对于这个yaml文件,小伙伴需要自己准备文件哦

写入数据用yaml.dump(数据,文件流,allow_unicode=True)

dump(data, stream,allow_unicode=True)方法将python数据对象转为yaml文件

allow_unicode=True :避免写入的数据出现乱码

file_name = open('D:\python练习\login.yaml',mode='a',encoding='UTF-8')
case= {'case8': {'user8': 'tom','pwasswd8': '12345','errorText8': '用户名密码错误,请重新输入'}}
# 写入数据
yaml.dump(case, file_name, allow_unicode=True)
file_name.close()

哈哈哈哈最后这张图没办法,电脑问题,截图黑屏,所以只能手机拍照了。

6、结束语

excel的文件基础操作就是这些了,小伙伴们学会了吗

最后这个yaml文件小伙伴实在不知道怎么弄,就私信我吧!

基于Python的Excel读写操作--内容超详细,值得排排坐相关推荐

  1. VS2010 对Excel读写操作

    VS2010对Excel读写操作 一.开发环境 编程环境 VS2010 office版本 office 2010 注意 :这里office版本号不一定非得和vs版本号一致. 二.基本实现功能 基本实现 ...

  2. php excel读写,phpGrace 工具类库 - excel 读写操作

    功能说明 excel 读写操作基于 PHPExecl 类库,可以方便的对 Excel 进行操作. 部署说明下载 PHPExcel.zip 解压后将全部文件部署到 phpGrace/tools 下 调用 ...

  3. VS2010 对Excel读写操作

    https://blog.csdn.net/ywx123_/article/details/77074038 VS2010对Excel读写操作 一.开发环境 编程环境 VS2010 office版本 ...

  4. python中的doc_基于Python获取docx/doc文件内容代码解析

    这篇文章主要介绍了基于Python获取docx/doc文件内容代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 整体思路: 下载文件并修改后缀 ...

  5. 基于python处理Excel表格(自动化办公)

    怎样用python处理Excel表格呢 不要方,雷哥教你. 一.理解 python与Excel表格 Excel 是 Windows 环境下流行的.强大的电子表格应用.openpyxl 模块让 Pyth ...

  6. python对文件读写操作

    不知道大家是否跟我一样,总是分不清楚python里面对于读写操作,今天给自己重新总结一下. w+ 可以同时读写,如果文件不存在,则新建文件,写入时是清空之前的内容. a+可以同时读写,如果文件不存在, ...

  7. 实现EasyExcel对Excel读写操作

    实现EasyExcel对Excel读写操作 .pom中引入xml相关依赖 <dependencies><!-- https://mvnrepository.com/artifact/ ...

  8. VS2015 对Excel读写操作

    一.开发环境 编程环境 VS2015 office版本 office 2016 二.参考博文 VS2010 对Excel读写操作 https://blog.csdn.net/ywx123_/artic ...

  9. Python数据可视化之Plotnine库超详细教程系列

    Python数据可视化之Plotnine库超详细教程系列(一):概述 一.Plotnine库简介 ggplot2包奠定了R语言数据可视化在数据科学中的地位,数据可视化一直是Python的短板,即使有M ...

最新文章

  1. Spring Cloud第九篇:链路追踪Sleuth
  2. 学习如何看懂SQL Server执行计划(三)——连接查询篇
  3. 五、Git多人开发:同时变更了文件名和文件内容如何处理?
  4. [导入].Net2.0 使用ConfigurationManager读写配置文件
  5. 怎样查看Oracle的数据库SID和用户名
  6. 在CentOS5.5上做Heroku的开发
  7. 多语言版本网站建设数据库设计和考虑的因素
  8. C#LeetCode刷题之#225-用队列实现栈(Implement Stack using Queues)
  9. CVPR2021 双图层实例分割,大幅提升遮挡处理性能
  10. ssl介绍以及双向认证和单向认证原理 (转)
  11. mysql5.6.38 设置密码_Percona Server MySQL 5.6.38修改root密码(忘记root密码)
  12. Firefox扩展开发
  13. jsp技术过时了吗?
  14. mysql聚集索引与非聚集索引
  15. 基于java嗖嗖移动业务大厅
  16. 奇点云宣布完成1.2亿元B1轮融资,首次公开数据星图
  17. ArcPy之读取几何要素(shapefile)的坐标
  18. 焦虑经济衍生冥想生意,年轻人会为“放空”买单吗?
  19. Open Compound Domain Adaptation
  20. 编程之旅第一章之初识C语言(1)

热门文章

  1. Android开发手机通讯录
  2. 前端Q知识体系梳理与面试准备直播回顾
  3. 数据结构与算法之多路查找树(2-3树、2-3-4树、B树、B+树)
  4. 木舟总结 | 2021年推文笔记分类汇总
  5. 信息技术时代杂志信息技术时代杂志社信息技术时代编辑部2022年第9期目录
  6. c盘oracle文件夹,C盘的用户文件夹转移到其他分区
  7. 2019西电复试计科,软件机试真题
  8. Android RGB与int型颜色互转
  9. c语言visit函数作用,Visit
  10. mysql server 安装及配置_mysql server的安装和配置