文件 file
文件是用于数据存储的单位
文件通常用来长期存储数据
文件中的数据是以字节为单位进行顺序存储的
文件的操作流程
1. 打开文件
2. 读/写文件
3. 关闭文件
注: 任何的操作系统,同一个应用程序同时打开文件的数量有最大数限制,所以在用完文件后需要关闭
文件的打开函数open
open(file, mode='rt') 用于打开一个文件,返回此文件流对象,如果打开文件失败,则会触发OSError错误
文件的关闭方法:
F.close() 关闭文件,释放系统资源
示例见:
file_open.py
文本文件操作模式
模式字符:
't' (默认)
1. 默认文件中存储的数据为字符数据,以行为单位分隔,在 python 内部统一用'\n'作为换行符进行分隔
2. 对文本文件的读写需要用字符串(str)进行读取和写入数据
各操作系统的换行符:
Linux换行符: '\n'
Windows换行符: '\r\n'
旧的Macintosh换行符 : '\r'
新的Mac OS换行符: '\n'
说明:
在文件文件模式下,各操作系统的换行符在读入python内部时转换为字符'\n'
文件的迭代读取:
open返回的文件流对象是可迭代对象
示例:
f = open('myfile.txt')
for line in f:
print(line)
文本文件的写操作:
写文件模式有:
'w'
'x'
'a'
详见:
python_base_docs_html/文件.html
示例见:
file_write_text.py
标准输入输出文件
sys.stain 标准输入文件
ctrl+d 输入文本结束
sys.stout 标准输出文件
sys.stderr 标准错误输出文件
模块名:sys
二进制文件操作
默认的文件中存储的都是以字节为单位的数据,通常有人为规则的格式,需要以字节为单位进行读写
F.read() 的返回类型:
1. 对于文本模式('t')打开的文件,返回字符串(str)
2. 对于二进制模式('b')打开的文件,返回字节串(bytes)
二进制通常只用read 不用readline
F.write(x)
1. 对于文本模式,x必须为字符串
2. 对于二进制模式,x必须为字节串
F.tell
返回当前的读写位置
F.seek 设置读写位置
F.seek(偏移量)
大于0的数代表向文件末尾移动的字节数
小于0的数代表向文件末尾移动的字节数
相对位置
0代表从文件头开始偏移
1代表从当前读写位置开始偏移
2代表从文件尾开始偏移
以十六进制方式查看文件内容的命令:
$ xxd 文件名
示例见:
file_write_binary.py
file_read_binary.py
F.seek() 方法
F.seek(偏移量, 相对位置)
偏移量:
大于0的数代表向文件尾方向移动
小于0代表向文件头方向移动
相对位置:
0 代表从文件头开始偏移
1 代表从当前位置开始偏移
2 代表从文件尾开始偏移
作用:
改变当前文件的读写位置
F.tell() 方法:
作用:
返回当前文件读写位置
小结:
文件操作的两种模式:
'b' 二进制模式
't' 文本模式
文件操作:
读 read /readline/readlines
写 write /writelines
汉字编码:
问题:
十个汉字占多少个字节
国标系列:
GB18030(二字节或四字节编码,共27533个汉字)
GBK(二字节编码,共21003个汉字)
GB2312(二字节编码,共个6763汉字)
(Windows 常用)
国际标准:
UNICODE32(UNICODE16) <---> UTF-8
(Linux, Mac OS X, IOS, Android等常用)
说明:
python3的字符串内部都是用UNICODE来存储字符的
python 编码(encode) 字符串:
'gb2312'
'gbk'
'gb18030'
'utf-8'
'ascii'
编码注释:
在python 源文件第一行或第二行写入如下内容是告诉解释执行器此文件的编码类型是什么
如:
# -*- coding: gbk -*-
# 设置源文件编码格式为gbk
或
# -*- coding: utf-8 -*-
# 设置源文件编码格式为utf-8