文件基础
文本显示:计算机显示功能的基本问题。
常用编码:
ASCII码
ord()和chr()用于ASCII码和字符之间的转换
>>> ord("a")
97
>>> ord("A")
65
>>> chr(55)
'7'
>>> chr(12)
'\x0c'
Unicode编码:跨语言、快平台编码
UTF-8编码:可变长度的Unicode编码 英文为单字节编码,中文为三字节编码
Unicode与UTF8编码自己范围对应关系
Python中字符串类型未编码
编码encode()
解码decode()
>>> x = "你好中国"
>>> bx = x.encode("utf-8")
>>> print(bx)
b'\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\xad\xe5\x9b\xbd'
>>> x = bx.decode("utf-8")
>>> print(x)
你好中国
GBK编码:汉字内码扩展规范 双字节编码
二进制文件:照片、音乐、视频、计算机程序等
文件操作
读取、写入、定位 其他:追加、计算等
关闭文件
打开文件 open()
<variable> = open(<name>,<mode>)
打开模式
读取文件
打开文件并读取
>>> f = open('G:/1.txt','r')
>>> f.read()
'Hello world \n1,2,3\n3,2,1'
>>> f.close()
由于文件读写时都有可能产生IOError,一旦出错,f.close()就不会调用,在python中可以使用with语句自动调用close()方法:
>>> with open('G:/1.txt','r') as f:
f.read()
'Hello world \n1,2,3\n3,2,1'
调用read()方法会一次性调用文件的全部内容,所以为了保险起见,反复使用read(size)方法,每次最多读取size个字节的内容,调用readlines()放法可以每次读取一行内容,如果文件小的话可以使用read()一次性读取文件。
file-like Object对象 待了解
二进制文件
读取二进制文件,比如图片、视频等,用'rb'模式打开文件
>>> f = open('G:/2.jpg','rb')
>>> f.read(20)
b'\xff\xd8\xff\xe1\x06\x8dExif\x00\x00MM\x00*\x00\x00\x00\x08'
字符编码
读取非UTF-8编码文本文件,需要给open()函数传入encoding参数
例如:
>>>f = open('G:/gbk.txt','r',encoding='gbk')
遇到不规范的编码,open函数会接收一个errors参数,表示如果遇到编码错误后如何处理:
>>>f = open('G:/ee.txt','r',encoding='gbk',errors='ignore')
写文件
也是调用open()函数,传入标识符'w'或者'wb'表示写文本文件或写二进制文件:
>>>f = open('G:/1.txt','w')
>>>f.write('Hello,world!')
>>>f.close()
同样,要写入特定编码,给open()函数传入encoding 参数