文件在计算机中应用广泛,计算机中的文件是以硬盘等外部介质为载体,存储在计算机中的数据的集合,文本文档、图片、程序、音频等都是文件。
类似于程序中使用的变量,计算机中的每个文件也有唯一确定的标识,以便识别和引用文件。文件标识分为路径、文件名主干和扩展名3个部分,如下所示:
D:\itcast\chapter10(路径)\example(文件名主干).dat(扩展名)
操作系统以文件为单位对数据进行管理,若想找到存放在外部介质上的数据,必须先按照文件标识找到指定的文件,再从文件中读取数据。
文件是数据的抽象和集合
文件是存储在辅助存储器上的数据序列
文件是数据存储的一种形式
根据数据的逻辑存储结构,人们将计算机中的文件分为文本文件和二进制文件。
文本文件专门存储文本字符数据,若一个文件中没有包含文本字符外的其他数据,就认为它是一个文本文件。文本文件可以直接使用文字处理程序(如记事本)打开并正常阅读。
二进制文件是人们根据计算机中数据的逻辑存储结构为文件划分的类别之一,计算机中存储的图像、音频、视频、数据库、可执行文件等都属于二进制文件,这类文件不能直接使用文字处理程序正常读写,必须使用关联程序才能正确获取文件信息。
二进制文件和文本文件这2种类型的划分基于数据逻辑存储结构而非物理存储结构,计算机中的数据在物理层面都以二进制形式存储的。
文件展现形态:文本文件和二进制文件,以二进制进行存储的。
对于格式化而言,存在字符串格式化,还有数据格式化,字符串格式化为“{ }{ }{ }".format(),将字符串按照一定规格和式样进行规范。而对于数据格式化,为将一组数据按照一定规格和式样进行规范:表示存储、运算等。
文本文件VS二进制文件
文本文件和二进制文件只是文件的展示方式
本质上,所有文件都是二进制形式存储
形式上,所有文件采用两种方式展示
形式上,我们存储的文件由程序读出进行使用时,那么文件就可以采用文本方式,或者二进制方式进行处理。
文本文件:
文件是数据的抽象和集合
由单一特定编码组成的文件,如UTF-8编码
由于存在编码,也被看成是存储器的长字符串。
适用于例如:txt文件、.py文件
二进制文件:
直接由比特0和1组成,没有统一字符编码
一般存在二进制0和1的组织结构,即文件格式
适用于例如:.png文件、avi文件。
示例如下:
对于一个文件“中国是一个伟大的国家!”而言:
他的文件形式为:“中国是一个伟大的国家!”
他的二进制形式为:b'\xe2\x80\x9c\xe4\xb8\xad\xe5\x9b\xbd\xe6\x98\xaf\xe4\xb8\x80\xe4\xb8\xaa\xe4\xbc\x9f\xe5\xa4\xa7\xe7\x9a\x84\xe5\x9b\xbd\xe5\xae\xb6\xef\xbc\x81\xe2\x80\x9d'
f.txt文件保存:“中国是一个伟大的国家!”
以文本形式打开文件:
示例代码如下:
tf=open("f.txt","rt",encoding="utf-8")#rt为以只读模式和文本模式打开 print(tf.readline()) #打印一行并输出 tf.close()
运行界面如下:
以二进制形式打开文件:
示例代码如下:
bf=open("f.txt","rb")#rb为以只读模式和二进制模式打开文件 print(bf.readline()) #打印一行并输出 bf.close()
运行界面如下:
代码与f.txt放到同一目录中,执行之后会输出。
文件的打开和关闭
文件处理的步骤:打开-操作-关闭
计算机处理一个文件,首先要使这个文件变成占用状态。
而对文件处理的时候,体现的是一种文件的存储状态,即在此文件的存储状态上对文件进行处理。
文件的打开即为将文件的存储状态转变为文件的占用状态。
文件的关闭即为将文件的占用状态转变为文件的存储状态。
文件的存储状态为文件为计算机中的硬盘存储
文件的占用状态为一个程序可以唯一的、排它的对文件进行相关的处理。
读文件函数有:a.read(size)、a.readline(size)、a.readlines(hint)
写文件函数有:a.write(s)、a.writelines(lines)、a.seek(offset)
文件的打开:
变量名=open(文件名,打开模式)
在python中可以通过内置函数open()打开文件,该函数的语法格式如下:
open(file,mode='r',encoding=None)
open( )函数中的参数file用于接收文件名或者文件路径
参数encoding用于指定文件的编码格式,常见的编码格式有ascii、utf-8等,
参数mode用于设置文件的打开模式,常用的打开模式有r、w、a,
变量名是文件句柄
文件名是文件路径和名称(源文件同目录可省路径)
打开模式为文本形式或者二进制形式,读文件或者写文件
文件的路径和名称可以是文件的绝对路径和名称:
(1)D:\PYE\f.txt 绝对路径即为:"D:/PYE/f.txt "或者"D:\\PYE\\f.txt "
因为\在python里面为转义字符,所以我们在输入地址时不能直接使用\,而需要使用/,或者使用\\即\还是以前的意思,不会发生变化,这也是双\\的用法。即转义符表达特定字符的本意, 转义符\后面的字符当作本义字符。
即直接给出当前文件的路径。
(2)相对路径(打开的文件与当前程序之间的路径)
相对路径为:"./PYE/f.txt",指的是从可执行程序的当前目录起找它的PYE目录。
打开模式:
(1)与读写相关的模式
1.'r',只读模式,默认值,如果文本文件不存在,返回FileNotFoundError ,可以利用try-except进行捕捉异常并进行异常处理。(“rb",rb为以只读模式和二进制模式打开二进制文件)
代码示例如下:
tf=open("f.txt","r",encoding="utf-8") print(tf.readline()) tf.close()
运行界面如下:
2.'w,覆盖写模式,文本文件不存在则创建,存在则完全覆盖(打开这样的文件主要是为了写文件)("wb",覆盖写模式,二进制文件不存在则创建,存在则完全覆盖)
代码示例如下:
tf=open("rgf.txt","w",encoding="utf-8") #文本形式,覆盖模式
运行界面如下:
之后我们在该程序的目录下发现了新创建的文件rgf.txt。
3.’x',创建写模式,文本文件不存在则创建,存在则返回FileExistsError
代码示例如下:
tf=open("rgf.txt","x",encoding="utf-8") #文本模式,创建写模式
运行界面如下:
因为在文件里面之前已经通过w命令创建成功了,所以文件存在返回异常。
4.'a',追加写模式,文本文件不存在则创建,存在则在文本文件最后追加内容(“ab",,追加写模式,二进制文件不存在则创建,存在则在二进制文件最后追加内容)
代码示例如下:
tf=open("ypl.txt","a",encoding="utf-8")#文本模式,追加写模式
运行界面如下:
5.'a+',文本形式,追加写模式和进行读文件。("ab+",二进制形式,追加写模式和进行读文件。)
代码示例如下:
bf=open("f.txt","a+")#文本形式,追加写模式和进行读文件。 print(bf)
代码示例如下:
6."r+",以读和写方式打开文本文件,若文件不存在,文件打开失败
("rb+",以读方式打开二进制文件,若文件不存在,文件打开失败)
代码示例如下:
tf=open("f.txt","rb+") print(tf)
运行界面如下:
’
7."w+",以读和写方式打开文本文件,若文件已存在,则重写文件(会首先自动清空文件内容),文件不存在则创建。
("wb+",以读和写方式打开二进制文件,若文件已存在,则重写文件(会首先自动清空文件内容),文件不存在则创建。)
代码示例如下:
tf=open("f.txt","wb+") print(tf)
运行界面如下:
8.当没有要求的时候,这时打开文件的时候以默认值进行打开,即默认使用文本形式打开和只读模式)
代码示例如下:
f=open("f.txt") #文本形式,只读模式,默认值(默认使用文本形式打开和只读模式)
运行界面如下:
(2)与打开文件方式相关的模式
1.'b'二进制文件形式
代码示例如下:
bf=open("f.txt","b") #二进制形式,只读模式
2.'t',文本文件模式,默认值,默认情况下用open.
代码示例如下:
bf=open("f.txt","t")
3.'t',与r/w/x/a一同使用,在原功能基础上增加同时读写功能
代码示例如下:
tf=open("f.txt","rt",encoding="utf-8") #文本形式,只读模式,默认值 print(tf.readline()) tf.close()
运行界面·如下:
代码如下所示:
tf=open("f.txt","wb")#可以向文件进行覆盖写模式,但还是二进制形式。