一、文件是储存在辅助器上的数据序列,展现形态分为文本文件和二进制文件,以二进制形式储存。
(1)文本文件
由单一特定编码组成的文件,如UTF-8编码,文本文件存储的是常规字符串,由若干文本行组成,通常每行以换行符'\n'结尾。常规字符串是指记事本之类的文本编辑器能正常显示、编辑并且人类能够直接阅读和理解的字符串,如英文字母、汉字、数字字符串。在Windows平台中,扩展名为.txt、.log、.ini的文件都属于文本文件,可以使用字处理软件如gedit、记事本进行编辑。
(2)二进制文件
直接由比特0和1组成,没有统一的字符编码。常见的如图形图像文件、音视频文件、可执行文件、资源文件、各种数据库文件、各类office文档等都属于二进制文件。二进制文件把信息以字节串(bytes)进行存储,无法用记事本或其他普通字处理软件直接进行编辑,通常也无法被人类直接阅读和理解,需要使用对应的软件进行解码后读取、显示、修改或执行。例如,图6-1中使用Windows记事本打开Python主程序文件pythonw.exe,由于这个文件是二进制可执行文件,无法使用记事本查看,所以显示乱码。
二、文件内容操作三步走:打开、读写、关闭。
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
file参数指定了被打开的文件名称。
mode参数指定了打开文件后的处理方式。
buffering参数指定了读写文件的缓存模式。0表示不缓存,1表示缓存,如大于1则表示缓冲区的大小。默认值是缓存模式。
encoding参数指定对文本进行编码和解码的方式,只适用于文本模式,可以使用Python支持的任何格式,如GBK、utf8、CP936等等。
如果执行正常,open()函数返回1个文件对象,通过该文件对象可以对文件进行读写操作。如果指定文件不存在、访问权限不够、磁盘空间不足或其他原因导致创建文件对象失败则抛出异常。
f1 = open( 'file1.txt', 'r' ) # 以读模式打开文件
f2 = open( 'file2.txt', 'w') # 以写模式打开文件
当对文件内容操作完以后,一定要关闭文件对象,这样才能保证所做的任何修改都确实被保存到文件中。
文件的打开:<变量名(文件句柄)>=open(<文件名>,<打开模式>)
| 文件的打开模式 | 描述 |
| 'r' | 只读模式,如果文件不存在,返回FileNotFoundError |
| 'w' | 覆盖写模式,文件不存在则创建,存在则完全覆盖 |
| 'x' | 创建写模式,文件不存在则创建,存在则返回FileExistError |
| 'a' | 追加写模式,文件不存在则创建,存在则在文件最后追加内容 |
| 'b' | 二进制文件模式 |
| 't' | 文本文件模式 |
| '+' | 与r/w/x/a一同使用,在原功能基础上增加同时读写能力 |
文件的读写:
| 方法 | 描述 |
| close() | 关闭文件,释放文件对象 |
| read([size]) | 从文本文件中读取size个字符的内容作为返回结果,或从二进制文件中读取指定数量的字节并返回,如果省略size则表示读取所有内容 |
| readable() | 测试当前文件是否可读 |
| readline() | 从文本文件读取一行内容作为结果返回 |
| readlines() | 把文本文件中的每行文本作为一个字符串存入列表中,返回该列表 |
| seek(offset) | 改变当前文件操作指针的位置,offset含义:0-文件开头;1-当前位置;2-文件结尾 |
| seekable() | 测试当前文件是否支持随机访问,若不支持则调用方法seek()、tell()、和truncate()时会抛出异常 |
| tell() | 返回文件指针当前位置 |
| truncate([size]) |
删除从当前指针位置到文件末尾的内容。如果指定了size,则无论指针在什么位置都只留下前size个字节,其余的一律删除 |
| write(s) | 把s的内容写入文件 |
| writable() | 测试当前文件是否可写 |
| writeline(s) | 把字符串列表写入文本文件,不添加换行符 |

浙公网安备 33010602011771号