序列的种类:
字符串 str
列表 list
元组 tuple
字节串 bytes
字节数组 bytearray
字节串和字节数组
字节串(也叫字节序列) bytes
作用:
存储以字节为单位的数据
字节串是不可变的字节序列
字节:
字节是0~255之间的整数,字节是数据传输和数据存储的基本单位
(例如:中国移动的流量...,文件大小等)
创建空字节串的字面值
b''
b""
b""""""
b''''''
创建非空的字节串的字面值
b'ABCD'
b"ABCD"
b'\x41\x42'
字节串的构造函数:
bytes() # 生成一个字的字节串,等同于 b''
bytes(整型可迭代对象) 用可迭代对象创建一个字节串
bytes(整数n) 生成n个值为0的字节串
bytes(字符串, encoding='utf-8') 用字符串的转换编码生成一个字节串
示例:
b = bytes()
b = bytes(range(65, 90))
b = bytes(10)
b = bytes('hello', 'utf-8')
b = bytes('中文', 'utf-8')
bytes 的运算:
与其它序列的运算规则完全相同
+ += * *=
< <= > >= == !=
in / not in
索引和切片
len(x), max(x), min(x), sum(x), any(x), all(x)
bytes 与 str的区别
bytes 存储字节(0~255)
str 存储字符(用来表示文字信息,值为0~65535或更大)
bytes与 str转换
编码(encode)
str ----------> bytes
b = s.encode(encoding='utf-8')
解码(decode)
bytes ---------> str
s = b.decode(encoding='utf-8')
字节数组 bytearray
可变的字节序列
构造函数:
bytearray() # 生成一个字的字节串
bytearray(整型可迭代对象) 用可迭代对象创建一个字节数组
bytearray(整数n) 生成n个值为0的字节数组
bytearray(字符串, encoding='utf-8') 用字符串的转换编码生成一个字节数组
运算和字节串完全相同
* *= + +=
< <= > >= == !=
in / not in
索引 index / 切片 slice
字节数组支持索引和切片赋值(重要)
文件 File
什么是文件
文件是用于数据存储的单位
文件通常用来长期存储数据
文件中的数据是以字节(byte)为单位进行存储的
文件的操作流程:
1. 打开文件
2. 读/写文件
3. 关闭文件
注:任何操作系统,一个应用程序同时打开文件的数量有最大数限制
文件的打开函数:
open(file, mode='rt') 用于打开一个文件,返回此文件对应的文件流对象,如果打开失败则会触发OSError错误
文件的关闭方法:
F.close() # 关闭文件,释放系统资源
示例:
# 此示例示意文件 的打开和关闭
try:
# f = open("mynote.txt") # 打开文件
f = open('/home/tarena/aid1807/pbase/day16/code/mynote.txt')
print("文件打开成功")
f.close()
print("文件已关闭")
except OSError:
print("文件打开失败")
文本文件的操作:
文本文件的模式字符 't'
说明:
1. 对文本文件的读写需要用字符串str 进行读取和写入数据
2. 默认文件中存储的都是字符(文字)数据,在读写中会自动进行编码转换操作
3. 以行为单位分隔,在python内统一用'\n'作用换行符进行分隔
各操作系统的换行符:
Linux换行符: '\n'
Windows 换行符: '\r\n'
旧的Macintosh换行符: '\r'
新的Mac OS 换行符: '\n'
文本文件读方法:
F.readline()
F.readlines()
F.read([字符数或字节数])
示例:
# 此示例示意文件 的打开及读取文本信息的操作
try:
f = open("mynote.txt") # 打开文件
print("文件打开成功")
# 读写文件
s = f.readline() # 读取一行 s='abcd\n'
print('len(s)=', len(s), '内空是', s)
s = f.readline() # 再读取一行 s = '1234'
print('len(s)=', len(s), '内空是', s)
s = f.readline() # 再读取第三行 s = ''
print('len(s)=', len(s), '内空是', s)
# 关闭文件
f.close()
print("文件已关闭")
except OSError:
print("文件打开失败")
文本文件的写方法
模式字符串: 'w'/'x'/'a'
F.write(字符串)
F.writelines(字符串列表)
示例:
# f = open("newfile")
# 如果不写第二个参数默认是: f = open('newfile', 'rt')
try:
# f = open("/root/newfile.txt", 'wt') # 失败抛出异常错误通知
f = open("newfile.txt", 'w')
# f = open("newfile.txt", 'x') # 如果原文件存在,则报错
# f = open("newfile.txt", 'a') # 如果原文件存在,则报错
print("打开成功")
# 在此处进行写文件操作
f.write("hello")
f.write("world")
f.writelines(['123456\n', 'abcdef\n'])
f.close()
print("关闭文件成功")
except OSError:
print("创建文件失败")
文件的迭代读取
文件流对象是可迭代对象,迭代过程将以换行符'\n'作用分隔符依次获取
示例:
f = open('mynote.txt', 'rt')
for line in f: # f绑定的文件流对象是可迭代对象
print(line)
标准输入输出文件:
sys.stdin 标准输入文件(默认为键盘设备)
ctrl + d 快捷键是让键盘输入文件结束符
sys.stdout 标准输出文件 (默认为屏幕终端)
sys.stderr 标准错误输出文件(默认为屏幕终端)
模块名: sys
说明:
1. 标准文件不需要打开和关闭就可以使用
2. 每一个python程序启动后都会有以上三个文件供我们使用
示例:
# 此示例示意标准输入文件 sys.stdin 的用法
import sys
s = sys.stdin.readline()
print(s)
sys.stdin.close() # 关闭标准输入文件则input函数就不能用了
s2 = input("请输入:")
print(s2)
# 此示例示意标准输入文件 sys.stdin 的用法
import sys
s = sys.stdin.read()
print(s)
import sys
sys.stdout.write("我是一个标准输出\n")
sys.stderr.write("我的出现是个错误!!!\n")
print("hello", 'world', file=sys.stdout)
f =open("myfile.txt", 'w')
print("你好!", "我在文件里", file=f)
f.close()
二进制文件操作:
模式字符: 'b'
默认文件中存储的都是以字节为单位的数据,通常有人为的格式
对二进制文件的读写需要用字节串(bytes) 进行操作
常用的操作方法:
F.read([字节数/字符数])
对于文本文件, F.read()返回类型为字符串str
对于二进制文件,F.read()返回类型为字节串bytes
F.write()
同上,对于二进制文件,写入的数据为字节串bytes或bytearray
F.tell() 方法
返回当前文件流的读写位置(从0开始,以字节为单位)
F.seek方法
作用:
设置文件的读写位置
格式:
F.seek(偏移量, whence=相对位置)
偏移量
大于0代表向文件尾方向移动
小于0代表向文件头方向移动
相对位置
0 代表从文件头开始偏移
1 代表从当前位置开始偏移
2 代表从文件尾开始偏移
示例:
# 此示例示意seek方法的用法
f = open('20.txt', 'rb') # 二进制方式打开
b = f.read(3) # 读了三个字节
print(b)
# f.seek(5, 0) # 代表从文件头向后移动5个字节
# f.seek(2, 1) # 代表从当前位置向后移动2个字节
f.seek(-15, 2) # 代表从文件尾向前移动15个字节
b = f.read(5)
print(b) # b'ABCDE'
f.close()
课后习题:
1. 写程序,让用户输入一系列整数,当输入小于零的数时结束输入
1) 将这些数字存于列表中
2) 将列表中的数字写入到文件numbers.txt中
(提示:需要将整数转为字符串或字节串才能存入文件中)
2. 写程序,将上题的numbers.txt中的整数读入到内存中形成列表
计算这些数中的最大值,最小值和它们的和
3. 写程序,实现复制文件功能
要求:
1) 要考虑关闭文件问题
2) 要考虑超大文件复制问题
3) 要能复制二进制文件(如:/usr/bin/python3 等文件)
4. 将学生信息管理程序添加两个功能:
| 9) 保存信息到文件(si.txt) |
| 10) 从文件中读取数据(si.txt) |
想要看更多的课程请微信关注SkrEric的编程课堂