Python对文件(外存)和内存的操作
二,文件的类型
二进制文件和文本文件:
二进制文件不可用文本工具打开,打开为乱码,且为不定长的,按照一定规则写入,无法直接操作
文本文件可以说是二进制文件的子集,以明文形式打开,它的发明是便于人们阅读以及编写文件,它采用字符编码:如GBK、UTF-8、Unicode以及ASCII等等,每个字符对应特定的二进制数值
详情可参考:
三,文本文件的编码与解码
计算机中存储的数据信息都是用二进制数表示的,我们在屏幕上看到的英文、汉字等字符是二进制数转换( 解码 )之后的结果
对于计算机领域来说,简单来讲,将字符用某种二进制数表示而存储在计算机中,称为‘编码’;将存储在计算机中的二进制数解析成字符,称为‘解码’
编码拥有不同的编码格式,比较常用的例如:ASCII编码:American Standard Code for Information Interchange,美国信息交换标准代码)7位表示一个字符,共128个字符ASCII码扩展一个字符占一个字节( 8位 ),共256个字符只能显示26个基本拉丁字母,阿拉伯数字和英式标点符号,而对其他语言无能为力。
关键点:0~9:48~57a~z:97~122A~Z:65~90
GBK编码:(GBK即“国标”、“扩展”汉语拼音的第一个字母,英文名称:Chinese Internal Code Specification)兼容ASCII码,且扩展中文字符编码一个汉字占2字节一个字母占1字节
Unicode编码:为了防止不同国家使用不同编码方式而造成解码错误问题(出现乱码)全世界所有字符编码的集合,每个符号都给予独一无二的编码,计算机只要支持这个字符集,就能显示所有字符了所有语言字符统一用2字节表示
UTF-8编码:(可变长编码)本着节约的精神,UTF-8编码把一个Unicode字符根据不同的字符编码成1~6个字节英文字母占1个字节汉字占3个字节很生僻的字符会占4~6个字节
使用什么编码格式编码就使用什么解码格式解码,在解码的过程中,若使用了错误的或者不同的解码格式(如用GBK编码,而使用UTF-8解码),则会出现乱码!
详情可以参考:
四,二进制文件的优点
1.二进制文件节约空间,用一串小数来打比方:按一种数据类型float为4个字节来存储数据,而不是像文本文件每个字符不按类别、分别存储为一个字节来存储2.二进制文件更加快捷,计算机直接用二进制处理数据3.精确度高,不会造成有效位丢失
详情可参考:
writelines()方法将什么写入文件五,文件的打开(打开权限)
磁盘上读写文件的功能是由操作系统提供的。现代操作系统不允许普通程序直接操作磁盘。
所以读写文件就是要求操作系统打开一个文件对象(通常称为文件描述符),然后通过操作系统提供的接口从这个文件对象中读取数据(读文件)或者向这个文件对象写入数据(写文件)。
1.调用open()方法
(1). 方法的含义
用于打开一个文件,赋予适当操作权限(读写等),并返回文件对象
(2).方法的常用形式
open ( path, mode[ , enccoding=])
接收两个参数,path:文件的路径(同一目录下的文件只需要文件名),mode:文件打开模式,赋予的权限。encoding设置打开的二进制编码模式,默认为系统默认的编码模式(不确定系统的编码模式,最好自行指定)
(3).mode的几种模式
默认模式
path指定文件必须存在,否则报错
1.open(path) – 默认拥有[ 读 ] 权限默认模式 mode = ‘t’,默认为文本模式
读模式
path指定文件必须存在,否则报错
1.open(path, ’ r ') – 拥有[ 读 ] 权限以只读的方式打开文件,文件的游标会放在文件的开头
2.open(path, ’ rb ') – 拥有[ 读 ] 权限以二进制只读的方式打开文件,文件的游标会放在文件的开头。一般用于非文本文件,如图片等。
3.open(path, ’ r+ ’ ) – 拥有[ 读,写 ] 权限[ ‘+’ 说明:打开一个文件进行更新操作(变得可读可写)]打开一个文件用于读写,文件游标会放在文件的开头注意:(1) 进行write()写操作时,不清空源文件内容,而是在写入时按字节进行覆盖原 .txt文件:改变后:(在utf-8编码的文件中,一个中文字符占3字节,一个半角英文字符占1字节,所以3个半角英文字符对应一个中文字符,一个一个对应,否则 .txt 文件会出错)(2) 进行read()操作时,从头开始读,游标按字符为单位移动:结果:
写模式
path指定文件可以不存在,不存在则会自动新建文件,不会报错
1.open(path, ’ w ’ ) – 拥有[ 写 ] 权限以只写的形式打开文件,当文件存在时,清空原内容,重新开始写;当文件不存在时,创建新文件来写,文件的游标固然会放在文件的开头( 因为为文件为空 )
2.open(path, ‘wb’ ) – 拥有[ 写 ] 权限以二进制形式只写形式打开文件,后续同上
3.open(path, ’ w+ ’ ) – 拥有[ 读,写 ] 权限打开一个文件用于读写,后续同上
注意:(1)以w+模式进行read()操作时,结果为空,因为每次打开文件都会先清空文件(2)write()操作照常写入内容,不会执行清空原内容操作,清空操作是open(path, ‘w+’)操作执行造成的
追加模式
path指定文件可以不存在,不存在则创建新文件,不会报错
1.open(path, ’ a ’ ) – 拥有[ 写 ] 权限打开一个文件用于追加。若文件存在,则写入操作在原内容之后,游标在原内容结尾;若文件不存在,则新建文件开始写入,游标在开头
2.open(path, ’ ab ’ ) – 拥有[ 写 ] 权限以二进制格式打开文件进行追加。后续同上。
3.open(path, ’ a+ ’ ) – 拥有[ 读,写 ] 权限打开一个文件用于读写。后续同上。注意:a与a+write()操作无区别,但是a+拥有read()读权限操作,但是a没有
注意:当open()模式包含二进制形式 ‘b’ 时,‘encoding=’参数不可设置,因为UTF-8和gbk为使文件以二进制编码形式打开,与b操作重复
六,文件的读
1.([size])以文件所有内容整体为一个对象,按照文件内容形式 ( 有换行则换行,空格则空格,不会直接将内容拼接整行输出 ) 读取文件内容,size指定读取字符个数,默认读取全部内容.py文件.txt文件输出:
2.line([size])以文件的第一行为对象输出,默认输出一行,其余同上

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。