文件
Python能够以文本和二进制两种方式处理
文件概述
- 文件是一个储存在辅助存储器上的数据序列,可以包含任何数据内容
- 文件包括文本文件和二进制文件两种类型
- 文本文件一般由单一特定编码的字符组成,可被看作是存储在磁盘上的长字符串
- 二进制文件直接由比特0和比特1组成,由于没有统一字符编码,职能当做字节流
无论是创建为文本文件还是二进制文件,都可以用“文本文件方式”和“二进制文件方式”打开,但打开后操作方式不同。 - 采用文本方式读入文件,文件经过编码形成字符串,打印出有含义的字符
- 采用二进制方式打开文件,文件被解析为字节流
文件的打与关闭
- Python通过解释器内置的open()函数打开一个文件,并实现该文件与一个程序变量的关联
<变量名>=open(<文件名>,<打开模式>)
- 文件名可以是文件的实际名字,也可以是包含完整路径的名字
- 打开模式用于控制使用何种方式打开文件,open()提供7种基本的打开模式
文件的打开模式
文件的打开模式 | 含义 |
---|---|
‘r’ | 只读模式,如果文件不存在,返回异常FileNotFoundError,默认值 |
‘w’ | 覆盖写模式,文件不存在则创建,存在则完全覆盖 |
‘x’ | 创建写模式,文件不存在则创建,存在则返回异常FileExistsError |
‘a’ | 追加写模式,文件不存在则创建,存在则在文件最后追加内容 |
‘b’ | 二进制文件模式 |
‘t’ | 文本文件模式,默认值 |
‘+’ | 与r/w/x/a一同使用,在原功能基础上增加同时读写功能 |
- 打开模式使用字符串方式表示
- 文件使用结束后要用close()方法关闭,释放文件的使用授权
- 文件读写时可能产生IOError,使得后面的f.close()不被调用。为确保文件始终被关闭,可使用try ... finally实现,也可使用with语句实现
try:
f = open('/path/to/file', 'r')
print(f.read())
finally:
if f:
f.close()
# with语句代码更简洁
with open('/path/to/file', 'r') as f:
print(f.read())
文件的读写
当文件以文本文件方式打开时,读写按照字符串方式,采用当前计算机使用的编码或指定编码
当文件以二进制文件方式打开时,读写按照字节流方式
文件内容读取方法
操作方法 | 含义 |
---|---|
<file>.readall() | 读入整个文件内容,返回一个字符串或字节流 |
<file>.read(size=-1) | 从文件中读入整个文件内容,如果给出参数,读入前size长度的字符串或字节流 |
<file>.readline(size=-1) | 从文件中读入一行内容,如果给出参数,读入该行前size长度的字符串或字节流 |
<file>.readlines(hint=-1) | 从文件中读入所有行,以没行为元素形成一个列表,如果给出参数,读入hint行 |
备注:返回字符串或字节流取决于文件打开模式
#逐行读入内容到内存有利于优化程序执行速度
fname=input('请输入要打开的文本文件')
fo=open(fname,'r')
for line in fo:#处理一行数据
print(line)
fo.close
文件内容写入方法
方法 | 含义 |
---|---|
<file>.write(s) | 向文件写入一个字符串或字节流 |
<file>.writelines(lines) | 将一个元素全为字符串的列表写入文件 |
<file>.seek(offset) | 改变当前文件操作指针的位置,offset的值:0——文件开头;1——当前位置;2——文件结尾 |