python---I/O流--文件


流:输入/输出流(I/O流)

一.编码
1.编码(encode)和解码(decode):

	 编码(encode)
 明文--------------------->暗文(密文)
     <--------------------
   	  解码(decode)

也就是明文转换成暗文的过程叫编码;暗文转换成明文的过程叫解码。

计算机中的所有数据,不论是文字、图片、视频、还是音频文 件,本质上最终都是按照类似 01010101 的二进制存储的。也就是说,计算机只能懂二进制数字。
3.
①ASCII(0-127)8位
②ANSI(拉丁文)8位
③GB2312(7000多个汉字) 16位
要求:前八位和后八位必须>127才能显示汉字
④GBK(在GB2312的基础上加入2W多汉字) 16位
要求:前八位>127就可以显示
⑤Unicode 万国码 占16位
全球统一编码规则 ,遇见汉字变24,英文为8
头是两个字节
⑥utf-8占8或24位
(强烈推荐使用,因为节约空间) 头是三个字节
4.
python2与python3的区别:
python2中的字符串(str,和unicode(u)) str+unicode 可以且str会自动转成unicode
python3中的字符串(str,bytes(b)) str+bytes 不可以

repr() #显示存储内容
5.
出现乱码原因:
编码和解码不一样
二.I/O
1.
I-input 输入 读取数据
O-output 输出 写入数据
2.
python用内置函数open()函数打开文件,并创建一个文件对象,open函数基本格式如下:

my = open(file, mode='r', buffering=None, encoding=None, errors=None,

newline=None, closefd=True)
其中,my为引用文件对象的变量;file为文件夹;mode为文件读写模式;buffering为缓冲,为None;encoding为编码,为None;errors为错误,为None;newline为换行,为None;closefd为关闭,为True。
3.
关闭文件:
.close():关闭文件。
.flush():可将缓冲区内容写入文件,但不关闭文件。
4.
文本文件有关的读写方法:
.read():把整个文件内容读进一个字符串。
.read(n):把n个字符读进一个字符串。
.readline():把下一个换行符号之前的内容读入一个字符串(读一行),读出内容包含行尾符号。
.readlines():把整个文件内容读入一个字符串列表,每一行为一个字符串。
.write():将字符串写入到文件指针位置,返回写入的字符个数。
.writelines():将列表写入文件指针位置,返回写入的字符个数。
.seek():将指针移动到第n个字符。0表示指向文件开头。
.tell():返回指针当前位置。
for line in my:用迭代的方式读文件,每次读一行。

小提示:
1.文本文件的读写以字符为对象,若文件包含Unicode的字符,python会自动进行转换。
2.文本文件中每行末尾以回车换行符号结束,在读出的字符串中,python用“\n”代替回车符,以二进制文本读出的回车换行符是“\r\n”。

5.文件读取模式如下:
①w: 写文件,创建新文件。若文件,原来的文件被覆盖。
②a: 以追加方式写文件。若文件存在,写入的数据默认添加到文件末尾。若文件不存在,会创建新文件。
③r: 读文件,省略文件读写模式时,默认为读文件。
④b: 组合使用(wb、ab、rb),表示写读二进制文件,未使用时读写文本文件。
⑤+: 用在模式末尾,表示打开文件后同时进行读、写操作。如:w+、r+。

小提示:
①文件读写模式中使用“b”表示访问二进制文件,否则为文本文件。
②文本文件的存储是字符的ASCII码,文本文件读写的是字符串;
二进制文件存储的是数据的二进制代码,二进制文件读写的是bytes字符串。
③打开文件后,Python用一个文件指针指示当前读写位置。
w或a方式打开文件时,文件指针指向文件末尾;
r打开文件时,文件指针指向文件开头。

6.以下图片中的文字为例:
在这里插入图片描述
(1) 以 r 方式打开文件读数据
以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
举例:
在这里插入图片描述

运行结果:
在这里插入图片描述
(2)以 r+方式打开文件
以 r+方式打开文件时,可从文件读取数据或向文件写入数据。再写入数据前,应先使用seek()方法设置数据写入位置。如在read()等方法读出数据后执行写入操作,数据会写入到文件末尾。
(3)以W 方式打开文件
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文 件。 以W 方式打开文件时,只能向文件写入数据,数据按先后顺序写入文体。

小提示:向文本文件写入字符串时,在数据需要换行时,应在字符串末尾嵌入“\n”,否则数据会自动换行。

(4)以W+ 方式打开文件
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
与w唯一区别是前者除了允许写文件,还可以读文件。

(5)以a 方式打开文件
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说, 新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

(6)以a+ 方式打开文件
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时 会是追加模式。如果该文件不存在,创建新文件用于读写。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值