数据存储在文件中使用很方便,可我该怎么读取文件呢?
jiangxue.txt文件中存储以下内容:
“
千山鸟飞绝,万径人踪灭。
孤舟蓑笠翁,独钓寒江雪。
”
1、读取文件
假设我在文件中存储一首‘江雪’的唐诗
#假设我将‘江雪’这首诗存储在'jiangxue'程序同文件夹下的txt文档中
with open('jiangxue.txt') as file_jx:
jiangxue=file_jx.read()
print(jiangxue)
输出:
千山鸟飞绝,万径人踪灭。
孤舟蓑笠翁,独钓寒江雪。
备注:
首先使用open()打开文件并存储在一个变量中,然后使用read()读取文件中的内容并作为字符串进行存储
使用with关闭文档,在文档使用完后会自动关闭文档
打印时有时会在最后一行会出现空行,可以使用rstrip()删除末尾的行去除空行
open()的参数可以是一个路径
2、逐行读取文件中的内容
#假设我将‘江雪’这首诗存储在'jiangxue'程序同文件夹下的txt文档中
file_path='jiangxue.txt'
with open(file_path) as file_jx:
for line in file_jx:
print(line.rstrip())
输出:
千山鸟飞绝,万径人踪灭。
孤舟蓑笠翁,独钓寒江雪。
备注:使用for循环逐行读取文件中的内容,你也可以使用readlines()读取每一行,你把rstrip()去掉测试发现第一行和第二行中间出现了一个空行
#假设我将‘江雪’这首诗存储在'jiangxue'程序同文件夹下的txt文档中
file_path='jiangxue.txt'
with open(file_path) as file_jx:
lines=file_jx.readlines()
for line in lines:
print(line)
输出:
千山鸟飞绝,万径人踪灭。
孤舟蓑笠翁,独钓寒江雪。
备注:with 会关闭打开的文档,当你想在with代码块外部使用读取的内容时,你可以将读取的内容存储在列表中
3、使用读取的内容
- 加入我现在想把读取的内容在一行显示
file_path='jiangxue.txt'
with open(file_path) as file_jx:
lines=file_jx.readlines()
jiangxue=''
for line in lines:
jiangxue +=line.strip()
print(jiangxue)
输出:
千山鸟飞绝,万径人踪灭。孤舟蓑笠翁,独钓寒江雪。
- 假如,我现在只想打印这首诗的第一句“千山鸟飞绝”,可以使用切片操作
file_path='jiangxue.txt'
with open(file_path) as file_jx:
lines=file_jx.readlines()
jiangxue=''
for line in lines:
jiangxue +=line.strip()
print(jiangxue[0:5])
输出:千山鸟飞绝
假如现在猜诗词,看你猜的句子是否正确,加入给你诗词的第一、二、四句让你猜第三句,并判断是否正确
file_path='jiangxue.txt'
with open(file_path) as file_jx:
lines=file_jx.readlines()
jiangxue=''
for line in lines:
jiangxue +=line
cai_jx='孤舟蓑笠翁'
if cai_jx in jiangxue:
print('恭喜你答对了!')
else:
print('很遗憾,答错了!')
输出:恭喜你答对了!
练习
将上边的诗词做成一个填空题:
file_path='jiangxue.txt'
with open(file_path) as file_jx:
lines=file_jx.readlines()
jiangxue=''
for line in lines:
jiangxue +=line
print(jiangxue.replace('孤舟','____'))
输出:
千山鸟飞绝,万径人踪灭。
____蓑笠翁,独钓寒江雪。
4、将内容写入文件
我们将“千山鸟飞绝”写入一个文件qian.txt
#首先将文件写入qian.txt
file_path='qian.txt'
with open(file_path,'w') as file_q:
file_q.write('千山鸟飞绝')
#验证是否已写入文件
with open(file_path) as file_w:
qian=file_w.read()
print(qian)
输出:千山鸟飞绝
备注:为什么没有在第一个with 代码块中读取文件呢,是因为第一个open有一个‘w’参数,代表只能写,不能读,如果想直接读就把’w’换成‘r+’,‘r’代表只读,默认是不写此参数
你也可以查看一下相同的文件夹下是不是自动生成了一个qian.txt文件
写入文件时也可以将’w’换成‘a’,‘w’会将文件先清空再写入,而‘a’不会清空文件