文件的使用
文件的概述
**文件的特点:**文件是一个存储在辅助存储器上的数据序列,可以包含任何数据内容。概念上,文件是数据的集合和抽象,类似的,函数是程序的结婚和抽象
文件包括两种类型:文本文件和二进制文件
文本文件
一般由单一特定编码的字符组成,如UTF-8编码,内容容易统一展示和阅读。大部分文本文件都可以通过文本编辑软件或文字出库软件创建、修改和阅读。由于文本文件存在编码,因此,它可以被看作是存储在磁盘上的长字符串,例如一个txt格式的文本文件。
二进制文件
直接由比特0和比特1组成,没有统一字符编码,文件内部数据的组织格式与文件用途有关。二进制是信息按照非字符单特定格式形成的文件。二进制文件由于没有统一的字符编码,只能当作字节流,而不能看作字符串
textFile = open("D:\\7.1.txt","rt",encoding='UTF-8')
print(textFile.readline())
textFile.close()
binFile = open("D:\\7.1.txt","rb")
print(binFile.readline())
binFile.close()
=========================================================================================
中华人民共和国是伟大的!
b'\xe4\xb8\xad\xe5\x8d\x8e\xe4\xba\xba\xe6\xb0\x91\xe5\x85\xb1\xe5\x92\x8c\xe5\x9b\xbd\xe6\x98\xaf\xe4\xbc\x9f\xe5\xa4\xa7\xe7\x9a\x84\xef\xbc\x81\r\n'
可以看出,采用文本方式读入文件,文件经过编码形成字符串,打印出由含义的字符:采用二进制方式打开文件,
文件被解析为字节(Byte)流。由于存在编码,字符串中的一个字符由两个字节表示
文件的打开关闭
Python对文本文件和二进制文件采用统一的操作步骤,即**“打开—操作—关闭”**
可以通过一组方法读取文件的内容或向文件写入内容,此时,文件作为一个数据对象存在,采用< a >.< b >()方式进行操作。
Python通过解释器对的内置的open()函数打开一个文件夹,open()函数格式如下
< 变量名 > = open(< 文件名 >,< 打开方式 >)
open()函数的两个参数:文件名和打开模式
文件名可以是文件的实际名字,也可以是包含完整路径的名字/我所使用的pycharm要求必须含完整的路径/
打开模式用于控制使用何种方式打开文件,open()函数提供7种基本的打开方式
文件的打开模式 | 含义 |
‘r’ | 只读模式,如果文件不存在,返回异常FileNotFoundError,默认值 |
‘w’ | 覆盖写模式,文件不存在则创建,存在则完全覆盖 |
‘a’ | 追加写模式,文件不存在则创建,存在则在文件最后追加内容 |
‘b’ | 二进制文件模式 |
‘t’ | 文本文件模式,默认值 |
‘x’ | 创建写模式,文件不存在则创建,存在则返回异常FileExistsError |
‘+’ | 与r/w/x/a一同使用,在原功能基础上增加同时读写功能 |
文件的关闭:文件使用结束后要用close()方法关闭,释放文件的使用授权,该方法的使用方式如下:
<变量名>.close()
文件的读写
Python提供四个常用的文件内容读取方式
操作方法 | 含义 |
< file >.readall() | 读入整个文件内容,返回一个字符串或字节流 |
< file >.read(size = -1) | 从文件中读入整个文件内容,如果给出参数,读入前size长度的字符串或字节流 |
< file >.readline(size = -1) | 从文件中读入一行内容,如果给出参数,读入该行前size长度的字符串或字节流 |
< file >.readlines( hint = -1) | 从文件中读入所有行,以每一行为元素形成一个列表,如果给出参数,读入hint行 |
返回字符串还是字节流取决于打开文本的方式
文件文本逐行打印
fname = input("请输入你要打开的文件的名称,我将为你展示其中的内容:")
fo = open(fname,"r",encoding='UTF-8')
for line in fo.readlines():
print(line)
fo.close()
注意:pycharm必须带上enconding = ‘UTF-8’,在输入文件名称是,必须带有包含完整路径的名字
逐行读入内容到内存
fname = input("请输入你要打开的文件的名称,我将为你展示其中的内容:")
fo = open(fname, "r",encoding="UTF-8")
for line in fo:
print(line)
fo.close()
文件的换行符
如果采用二进制方式打开文件,换行符只是一个符号,对于一个字节,表示为“\n”;如果采用文本方式打开文件,换行符表示一行的结束,辅助程序对文件的处理。文件的换行符是真实存在的一个字符
Python提供了三个与文件内容写入有关的方法
方法 | 含义 |
< file >.write(s) | 向文件写入一个字符串或字节流 |
< file >.writelines(lines) | 将一个元素全为字符串的列表写入文件 |
< file >.seek(offset) | 改变当前文件操作指针的位置,offset的值:0——文件开头;1——当前位置;2——文件结尾 |
fname = input("请输入要写入的文件")
fo = open(fname,"w+",encoding='UTF-8')
ls = ["唐诗","宋词","元曲"]
fo.writelines(ls)
for line in fo:
print(line)
fo.close()
**writelines()**函数把所有的元素写到同一行,没有换行