前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 基础 day3

python 基础 day3

作者头像
py3study
发布2020-01-03 11:09:49
2680
发布2020-01-03 11:09:49
举报
文章被收录于专栏:python3python3

python 操作文件的常用方式有如下

读文件:r 模式 实例演示1: f1 = open(file='D:\Python3.5-learn\模块2\character3_文件操作\staff_table.txt',mode='r',encoding='utf-8') # 以 r 的 模式,打开指定路径的文件 ,按照utf-8 的方式去读取

data = f.read() # 读取文件,表示读取所有内容

f.close() # 关闭文件

实例演示2: f2 = open(file='D:\Python3.5-learn\模块2\character3_文件操作\staff_table.txt',mode='rb',encoding='utf-8') # 以 rb 二进制 的 模式,打开指定路径的文件 ,按照utf-8 的方式去读取

data = f.read() # 读取文件,表示读取所有内容

f2.close() # 关闭文件

示例2和示例1的区别在哪?

答:在于示例2打开文件时并未指定encoding,这是为何?是因为直接以rb模式打开了文件 ,rb是指二进制模式,数据读到内存里直接是bytes格式,如果想内容,还需要手动decode,因此在文件打开阶段,不需要指定编码

循环遍历文件:

f = open(file='D:\Python3.5-learn\模块2\character3_文件操作\staff_table.txt',mode='r',encoding='utf-8') #

for line in f:

代码语言:javascript
复制
 print(line)

f.close()

写文件:w 模式 实例演示1: f1 = open(file='D:\Python3.5-learn\模块2\character3_文件操作\staff_table.txt',mode='w',encoding='utf-8') # 以 w 的 模式,打开指定路径的文件 ,按照utf-8 的方式去写

data = f.write(“.....”) # 写入指定的文件

f.close() # 关闭文件

实例演示2: f2 = open(file='D:\Python3.5-learn\模块2\character3_文件操作\staff_table.txt',mode='rb',encoding='utf-8') # 以 wb 二进制 的 模式,打开指定路径的文件 ,按照utf-8 的方式去读取

data = f.write(“.....”) # 写入指定的文件

f2.close() # 关闭文件

提示:文件以w 或者 wb 的方式去操作的时候,会清空原有的文件,

wb,写入时需要直接传入以某种编码的0100101,即:字节类型 w 和 encoding,写入时需要传入unicode字符串,内部会根据encoding制定的编码将unicode字符串转换为该编码的 010101010

追加文件:a模式 f1 = open(file='D:\Python3.5-learn\模块2\character3_文件操作\staff_table.txt',mode='a',encoding='utf-8') # 以 w 的 模式,打开指定路径的文件 ,按照utf-8 的方式去写

data = f.write(“\n11,Kevin Chen,22,13151054603,Sales,2013-04-01”) # 写入指定的文件

f1.close() # 关闭文件

文件操作时,以 “a”或“ab” 模式打开,则只能追加,即:在原来内容的尾部追加内容

写入到硬盘上时,必须是某种编码的0101010,打开时需要注意:

ab,写入时需要直接传入以某种编码的0100101,即:字节类型 a 和 encoding,写入时需要传入unicode字符串,内部会根据encoding制定的编码将unicode字符串转换为该编码的 010101010

读写模式:r+ f1 = open("beiying2.txt", "r+",encoding="utf-8") # 以读写的方式打开文件 data = f1.read() # 读取文件 print(data) f1.write("\n first line") # 在文件的末尾追加文件 f1.close() # 关闭文件

写读模式:w+ f1 = open("beiying.txt", "w+", encoding="utf-8") data = f1.read() print(data) f1.write("line 1") f1.write("\nline 2") f1.write("\nline 3") f1.write("\nline 4") f1.close()

w+会先把文件清空,再写新内容,相比w模式,只是支持了一个读功能,且还只能读已经写入的新内容

文件操作的其他方式: def flush(self, *args, **kwargs): # real signature unknown 把文件从内存buffer里强制刷新到硬盘

def seek(self, *args, *kwargs): # real signature unknown 把操作文件的光标移到指定位置 注意seek的长度是按字节算的, 字符编码存每个字符所占的字节长度不一样。 如“路飞学城” 用gbk存是2个字节一个字,用utf-8就是3个字节,因此以gbk打开时,seek(4) 就把光标切换到了“飞”和“学”两个字中间。 但如果是utf8,seek(4)会导致,拿到了飞这个字的一部分字节,打印的话会报错,因为处理剩下的文本时发现用utf8处理不了了,因为编码对不上了。少了一个字节

def tell(self, *args, **kwargs): # real signature unknown 返回当前文件操作光标位置

def truncate(self, *args, *kwargs): # real signature unknown 按指定长度截断文件 指定长度的话,就从文件开头开始截断指定长度,不指定长度的话,就从当前位置到文件尾部的内容全去掉。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档