文件 File
- 文件是用于数据长期存储的单位
- 文件通常用来长期存储数据
- 文件中的数据是以字节为单位进行存储的
文件的操作流程
- 打开文件
- 读/写文件
- 关闭文件
- 注:任何的操作系统,一个应用程序同时打开文件的数量有最大数的限制
文件的打开函数
- open(file, mode='rt') 用于打开一个文件,返回此文件流对象,如果打开文件失败,则会触发OSError错误
文件的关闭方法
- F.close() # 关闭文件,释放系统资源
文本文件操作
- 操作模式:
- 't'
- 说明:
- 默认文件中存储的都为字符串数据,在读写过程中会自动进行编解码操作
- 文本文件以行为单位进行分隔,在python内部统一用'\n'作用为换行符进行分隔
- 对文本文件的读写操作需要用字符串(str) 进行数据操作
- 各操作系统的换行符
- Linux 换行符: '\n'
- Windows 换行符: '\r\n'
- 新的Mac OS 换行符: '\n'
- 旧的Macintosh换行符: '\r'(已不用)
| 方法 | 说明 |
|---|---|
| F.close() | 关闭文件(关闭后文件不能再读写会发生ValueError错误) |
| F.readline() | 读取一行数据,如果到达文件尾则返回空行 |
| F.readline(max_xhars=-1) | 返回每行字符串的列表,max_chars为最大字符(或字节)数 |
| F.writelines(lines) | 将字符串的列表或字符串的列表中的内容写入文件 |
| 二进制操作方法 | |
| F.read(size = -1) | 从一个文件流中最多读取size个字符(文本文件)或字节(二进制文件) |
| F.write(text) | 写一个字符到文件流中,返回写入的字符串(文本文件)或字节数 |
| F.tell() | 返回当前文件流读写指针的绝对位置(字节为单位) |
| F.seek(offest, whence=0) | 改变数据流读写指针的位置,返回新的绝对位置 |
| F.flush() | 把写入文件对象的缓存内容写入到磁盘 |
| F.readable() | 判断这个文件是否可读,可读返回True,否则返回False |
| 字符 | 含义 |
|---|---|
| 'r' | 以只读模式打开 |
| 'w' | 已只写方式打开,删除原有文件内容(如果文件不存在,则创建该文件并以只写方式打开) |
| 'x' | 创建一个新文件,并以写模式打开这个文件,如果文件存在则会产生"FileExistsError"错误 |
| 'a' | 以只写文件打开一个文件,如果有原有文件则追加到文件末尾 |
| 'b' | 用二进制模式打开 |
| 't' | 文本文件模式打开(默认) |
| '+' | 为更新内容打开一个磁盘文件(可读写) |
- 缺省模式是'rt'
- 'w+b'可以实现二进制随机读写,当打开文件时,文件内容将被清零
- 'r+b'以二进制读和更新模式打开文件,打开文件时不会清空文件内容
- 'r+' 以文本模式读和更新模式打开文件,打开文件时不会清空文件内容
文件流对象是可迭代对象,迭代过程中将以换行符'\n'作为分隔符
- 示例:
f = open('phoneNumber.txt') for line in f: print(line) # 打印每一行数据
标准输入输出文件
- sys.stdin 标准输入文件 ctrl + d 输入文件结束符
- sys.stdout 标准输出文件
- sys.stderr 标准错误输出文件
- 模块名:sys
- 注:标准文件不需要打开和关闭就可以使用
二进制文件操作
- 二进制文件操作模式字符: 'b'
- 默认文件中存储的是以字节为单位数据,通常有人为规定的格式,二进制文件操作需要用字节串进行读写
- F.read()/F.readline() F.readlines() 返回类型
- 对于文本文件,F.read()等函数返回字符串(str)
- 对于二进制文件,F.read()等函数返回字符串(bytes)
F.tell 方法
- 作用
- 返回当前的读写位置(从文件头以字节为单位)
F.seek方法
- F.seek(偏移量,whence=相对位置)
- 偏移量
- 大于0的数代表向文件末尾方向移动的字节数
- 小于0的数代表向文件头方向中移动的字节数
- 相对位置
- 0 代表从文件头开始偏移
- 1 代表从文件当前读写位置开始偏移
- 2 代表从文件尾开始偏移
汉字编码(只讲两种)
- 国标系列
- GB18030 (二字节或四字节编码,共27533个字)
- GBK (二字节编码,共21003个字)
- GB2312(二字节编码,共6763个汉字)
- GBK (二字节编码,共21003个字)
- (window常用)
- GB18030 (二字节或四字节编码,共27533个字)
- 国际标准:UNICODE <---> UTF8
- (Linux / Mac OS x / IOS / Android 等常用)
python编码字符串
- gb2312
- gbk
- gb18030
- utf-8
- ascii
- ...
- 以上字符串用于encode 和 decode 中
编码注释
- 在python源文件的第一行或第二行写入如下内容
# -*- coding:gbk -*-
# 设置源文件编码格式为gbk
- 或
# -*- coding:utf-8 -*-
-
作用: 告诉解释执行器,此前文件的编码