前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python系列~文件处理的那些事

Python系列~文件处理的那些事

作者头像
小Bob来啦
发布2021-01-11 14:19:30
7470
发布2021-01-11 14:19:30
举报

不用刻意去巴结一个人,用自己独处的时间,去努力提升自己,待到时机成熟时,就会有一批朋友与你同行。用人情做出来的朋友只是暂时的,用人格吸引的朋友才能更长久。

总目录:

  1. 文件的类型
  2. 文件的打开和关闭
  3. 文件内容的读取
  4. 数据的文件写入

PS:关于文件更多的实际操作,一般都以代码形式表示。

一.文件的类型

首先,我们得理解什么是文件:

简单来说,文件是数据的抽象和集合,也可以理解为是存储在存储器上的数据序列,同时也是数据存储的一种形式。

文件展示形态:文本文件和二进制文件(本质上文件都是以二进制文件存储的, 且任何文件都可以以二进制文件形式打开)。

文本文件:由单一特定编码组成的文件,如UTF-8编码。由于存在编码,文本文件也看成是存储着的长字符串。如:.txt文件,.py python源代码文件。

二进制文件:直接由比特0和1组成,没有统一字符编码,一般存在二进制0和1的组织结构,即文件格式。如:.png图片文件,.avi视频文件等。

打开并读取文件实例:

代码语言:javascript
复制
tf = open("test1.txt","rt")  #以文本文件打开一个test1.txt文件并读取,当rt换成用rb时则是以二进制文件形式打开 
print(tf.readline()) 
tf.close()

二.文件的打开和关闭

当Python执行文件相关操作时,也和其它编程语言类似,都遵循一定的步骤:打开——操作——关闭。

当文件没有被程序处理时,体现的是以文件形式的存储状态,当我们准备操作文件时,就得使文件变成占用状态,使得程序对文件进行相关处理。

当我们准备打开文件时,使用的是open操作,在关闭时是使用的close操作再对文件进行数据读入和输出,也叫读文件和写文件。

Python也提供了相关文件处理的函数

关于读文件:

代码语言:javascript
复制
a.read(size)
a.readline(size)
a.readlines(hint)

关于写文件:

代码语言:javascript
复制
a.write(s)
a.writelines(lines)
a.seek(offset)

To:关于文件读写方法,在数据读写实例中会讲解。

那么打开文件也和其它语言类似,如下:

代码语言:javascript
复制
<变量名>=open(<文件名>,<打开模式>)#文件名包括文件路径和名称(源文件同目录可省路径)
#打开文件的模式再上次也已提到,分为两种模式:文本形式或二进制

关于文件路径打开方式:

切记:我们在Windows平台上的绝对路径通常会有\,但在Python中,\被解析为转义字符。所以,一般用/来替代\。当然,有强迫症的同学可以使用两个\\,以达到一个\ 的效果。(\起转义字符的作用)

相对路径:如果某个需要打开的文件在程序的某个盘的根目录下,我们在指定路径时可省略盘符号,比如需要打开的文件在D:PY\\a.txt,那么在程序就可写成.PY\\a.txt 如果需要打开的文件与程序在同一个目录下,我们就可以省略路径,直接使用a.txt即可。

文件的七种打开模式:

代码语言:javascript
复制
'r' #只读模式,默认值,如果文件不存在,返回File Not Found Error
'w' #覆盖写模式,文件不存在则创建,存在则完全覆盖
'x' #创建写模式,文件不存在则创建,存在则返回File Exists Error
'a' #追加写模式,文件不存在则创建,存在则在文件最后追加内容
'b' #二进制文件模式
't' #文本文件模式,默认值打开文件方式
'+' #与r/w/x/a一同使用,在原功能基础上增加同时读写功能

实例:当我们在程序目录下创建text1.txt的文本文件

代码语言:javascript
复制
tf = open("test1.txt") #文本形式,只读模式,默认值,也可以使用:
tf=open("test1.txt","rt") #文本模式,只读模式,默认值,r为只读模式,t为文本模式
#即:rt也是默认文件的打开模式
tf=open("test1.txt","w") #文本模式,覆盖写模式,如果文本不存在,系统则会自动创建一个
f=open("test1.txt","a+") #文本形式,追加写模式+(+号代表可以读取文件信息)读文件(在文件内容的后面加上自己要写入的内容)。
#接上:如果没有+号,则不能从文件中读取信息
f=open("test1.txt","x") #文本形式,创建写模式,x表示如果文件不存在,则会创建一个文件并写入信息,如果文件存在,则会返回异常
f=open("test1.txt","b") #二进制形式,只读模式 是一种只读的二进制方式打开的模式
f=open("test1.txt","wb") #二进制形式,覆盖写模式,可以对文件进行覆盖写

文件关闭(如果文件未被关闭,当程序如果是正常退出时,Python解释器也会自动关闭这个文件):<变量名(文件句柄)>.close()

三.

文件内容的读取

上述提到过的三个文件读取的方法:.read .readline .readlines

代码语言:javascript
复制
<f>.read(size=-1) #读入全部内容,如果给出参数,读入前size长度
#如:s=f.read(2)
<f>.readline(size=-1) #读入一行内容,如果给出参数,读入该行前size长度
#如:s=f.readline()
<f>.readlines(hint=-1) #读入文件所有行,以每行为元素形成列表,如果给出参数,读入前hint行
#如:s=f.readlines()

文件的全文本操作

1.遍历全文件的方法:一次读入,统一处理

代码语言:javascript
复制
fname=input("请输入要打开的文件名称:")
fo=open(fname,"r")
txt=fo.read()#对全文txt进行处理
fo.close
#但是当文本文件特别大时,比如几百个G,当我们把这些文件信息读入内存时,会特别耗费内存资源

2.按数量逐步读入,逐步处理:

代码语言:javascript
复制
fname=input("请输入要打开的文件名称:")
fo=open(fname,"r")
txt=fo.read(2)#读入两个字节
while txt != "":#对txt文件进行处理
  txt=fo.read(2)
fo.close

3.逐行遍历处理(更常用)

代码语言:javascript
复制
#一次读入,分行处理(1)
fname=input("请输入要打开的文件名称")
fo=open(fname,"r")
for line in fo.readlines():#遍历文件,文件中的每一行都是一个元素
  print(line)
fo.close()
#分行处理,逐行处理(2)
fname=input("请输入要打开的文件名称")
fo=open(fname,"r")
for line in fo:
  print(line)
fo.close()

四.数据的文件写入

代码语言:javascript
复制
<f>.write(s) #向文件写入一个字符或字节流
如:f.write("China!")
<f>.writelines(lines) #将一个全为字符串发列表写入文件
如:ls=["China","Franch"]
f.writelinse(ls)#将元素直接拼接
<f>.seek(offset) #改变当前文件操作指针的位置,offset含义:0-文件开头,2-文件结尾 
如:f.seek(0) #回到文件开头

数据写入:

代码语言:javascript
复制
fo=open("output.txt","w+")
ls=["China",""]
fo.writelines(ls) #写入一个字符串列表
fo.seek(0)#回到开头(当写入数据时,指针是指向数据末尾的,需要将指针重新指向开头)
for line in fo:
  print(line) 
fo.close

Python学习系列的文章到文章也就结束啦,关于更多Python的学习,还请后续继续关注“程序员Bob”呀。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员Bob 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档