问题20:如何读写文本文件

时间:2022-05-21 17:39:14

关于文件操作,参考:Python:文件操作

知识点杂集:

一、文件存储与读取的步骤:

1)思路:

  1. str.encode('编码格式'):对unicode字符串进行编码,编码成连续字节的格式,才能存放到文件中,即物理介质上
  2. str.decode('解码格式'):对物理介质上的连续字节数据进行解码,解码常unicode格式的数据,才能在python的IDE上显示;

#编码格式:UTF-8、GBK、BIG5;

#python内部用unicode编码,来表示一个字符;显示格式也是unicode;

  ==>unicode编码才是真正意义上的字符串;

 

2)打开文件、将数据存储到文件中、关闭文件、打开并读取文件内容

A、打开文件:open()函数

完整格式:open(file, mode = 'r', buffering = -1, encoding = None, errors = None, newline = None, closefd = True, opener = None)

#file:需要打开的文件的物理地址 + 文件名;默认打开当前目录(IDE所操作的.py文件所在文件夹)下的文件,即只有文件名,不带文件物理地址;

#mode:打开的方式;

 

 

 

二、实例

实例1:unicode格式和str格式的转换:

s = u'你好'

#encode(编码格式),指定编码格式,对unicode字符串进行编码,
r = s.encode('utf-8')
print(r)
#输出:b'\xe4\xbd\xa0\xe5\xa5\xbd'
#b'\xe4\xbd\xa0\xe5\xa5\xbd':共用了6个字节(xe4为一个字节)来编码字符串 '你好';
#得到一个string的字符串,即连续字节的字符串;
#只有string的字符串,才能存到物理介质中,

#decode('解码格式'),对编码的string格式的字符串进行解码;
print(r.decode('utf-8'))
#输出:你好
#encode选择的编码格式,要和decode选择的解码格式统一(都用utf-8),不然得不到最初的数据;

实例二:数据存放文件内、从文件内读取数据

 

 

三、其它:

1)unicode格式的数据,不能够直接存储到文本文件中,必须以一种编码格式(如UTF-8),将数据编译成连续字节的格式(如str),才能存放到文件中;

2)从文本文件中读取的也是编码后的字节,要想显示原始数据,需要对其进行解码:str.decode('解码格式')

  注:解码的格式,要于文件编码时的格式统一,不然得不到最初数据;

3)从python2到python3,字符串的语义变化:

python2 ——> python3
---------------------- str -> bytes unicode -> str

4)str,表面上表示的是字符串,实际上抽象的是一个连续的字节;

  ==>因为,早起美国人发明字符编码(ascii码)时,一个字节表示一个字符,只针对一个字符(不是字符串)进行编码的,若想要多个连续的字符串,则给出一个连续的字节;

  ==>后来,由于各国语言的字符种类较多,一个字节表示一个字符,无法满足需(表示不完),则各种编码格式被发明,其中unicode是比较通用的一种;