文件读写是支撑起人类世界的基本功能之一
# - Tutorial 8
# - 2020-2-7
# - Johan
# - 题目:
# 1、从文件读取数据
# 2、写数据到文件
"""
包含语法:
1、文件读写
2、列表操作
3、异常处理
"""
# 读文件,读取到两个列表
num = []
name = []
index = [1, 2, 3]
i = 1
try:
file = open('demo.txt', 'r')
except IOError:
print('Fail to open the file.')
else:
while line := file.readline():
if i in index:
num.append(line)
i += 1
else:
name.append(line)
i += 1
file.close()
print(num)
print(name)
# 写文件,写入100以内所有奇数
try:
file = open('write.txt', 'w')
except IOError:
pass
else:
array = list(range(1, 100, 2))
for i in array:
file.write('%d\n' % i)
print('Write over.')
file.close()
运行结果:
代码中有个except块中有个pass语句
这个pass关键字其实就是干这个的,有点像C语言里面单独的一个空代码块或分号,表示无操作,凑位置使得语法正确
所以在这种想不出来要作甚的地方,就可以用个pass
其中,文件打开时有以下一些方式:
r | 只读方式打开,指针在文件开头,默认模式 |
rb | 二进制格式打开文件,指针在开头 |
r+ | 打开一个文件用于读写,指针在开头 |
rb+ | 二进制格式打开一个文件用于读写,指针在开头 |
w | 打开文件只用于写,若文件已存在则打开文件并从开头开始编辑,原有内容删除,如果文件不存在则创建新文件 |
wb | 二进制格式打开文件只用于写,若文件已存在则打开文件并从开头开始编辑,原有内容删除,如果文件不存在则创建新文件 |
w+ | 打开文件用于读写,若文件已存在则打开文件并从开头开始编辑,原有内容删除,如果文件不存在则创建新文件 |
wb+ | 二进制格式打开文件用于读写,若文件已存在则打开文件并从开头开始编辑,原有内容删除,如果文件不存在则创建新文件 |
a | 打开文件用于写,若文件已存在则打开文件从末尾开始追加,如果文件不存在则创建新文件 |
ab | 二进制格式打开文件用于写,若文件已存在则打开文件从末尾开始追加,如果文件不存在则创建新文件 |
a+ | 打开文件用于读写,若文件已存在则打开文件从末尾开始追加,如果文件不存在则创建新文件 |
ab+ | 二进制格式打开文件用于读写,若文件已存在则打开文件从末尾开始追加,如果文件不存在则创建新文件 |
关于读文件的操作要多一些,注意readline()、readlines()、read()的区别,其他还可以了解tell()、seek()的功能
可以看到以上代码中存在大量try-except的异常操作,代码多了会看上去很繁杂,Python提供一种with语句简化异常捕捉的代码
比如文件写过程可以简化为:
# 写文件,写入100以内所有奇数
with open('write.txt', 'w') as file:
array = list(range(1, 100, 2))
for i in array:
file.write('%d\n' % i)
print('Write over.')
Python还有个Pickle模块,可以用于数据序列和反序列化操作,很方便实用