赞
踩
目录
任务描述
本关任务:编写一个能读文件全部内容到一个字符串的小程序。
相关知识
为了完成本关任务,你需要掌握: 1.文件的打开 2.读文件到字符串
- file = '/data/bigfiles/出塞.txt'
- with open(file, mode='r', encoding='utf-8') as f: # 为文件对象命的名放在as后面
- txt = f.read() # 将文件全部内容读入到字符串txt中
- print(txt)
任务描述
本关任务:编写一个能读文件前n个字符的小程序。
相关知识
为了完成本关任务,你需要掌握: 1.读文件到字符串
读文件到字符串
2.read(size) 当参数size为大于或等于0的整数时,读取size个字符
- n = int(input())
- file = '/data/bigfiles/出塞.txt'
- with open(file, mode='r', encoding='utf-8') as f: # 为文件对象命的名放在as后面
- txt = f.read(n) # 将文件前3个字符读入到字符串txt中
- print(txt)
本关任务:编写一个能逐行读取并输出文件内容的小程序。
相关知识
为了完成本关任务,你需要掌握: 1.读文件到字符串 2.文件指针
读文件到字符串
1.f.readline() 从文件中读取单行数据;字符串末尾保留换行符(\n),空行使用 '\n' 表示,该字符串只包含一个换行符。 f.readline() 返回空字符串时,表示已经到达了文件末尾。
- n = input()
- file = '/data/bigfiles/'+n
- with open(file,'r',encoding = 'utf-8') as poem: # 打开文件创建文件对象,命名为poem
- while txt := poem.readline(): # 逐行读文件,直至文件结束
- print(txt.strip()) # 去除行末的换行符后输出当前读到的字符串
任务描述
本关任务:编写一个能读取文件到列表中的小程序。
相关知识
为了完成本关任务,你需要掌握: 1.读文件到列表
读文件到列表
1.readlines()
无参数时,读取文件全部数据,返回一个列表,列表中每个元素是文件对象中的一行数据,包括行末的换行符’\n’。
- file = input()
- with open(file, 'r', encoding='utf-8') as poem: # 打开文件创建文件对象,命名为poem
- poem_ls = poem.readlines() # 读取文件,到第10个字符所在的行末
- print(poem_ls)
任务描述
本关任务:编写一个能读取文件中的数据到二维列表的小程序。
相关知识
为了完成本关任务,你需要掌握: 1.字符串切分 2.遍历文件转二维列表
字符串切分
1.txt.split(sep)
根据分隔符sep对字符串txt进行切分,返回一个列表。
- file = input()
- with open('/data/bigfiles/'+file, 'r', encoding='utf-8') as fr: # 打开文件创建文件对象,命名为poem
- score_ls = [row.strip().split(',') for row in fr] # 遍历文件对象,row为当前行
- print(score_ls) # 输出二维列表
根据提示,在右侧编辑器补充代码,输入一个3位数字字符表示的诗的序号,从文件“/data/bigfiles/唐诗三百首.txt”中读出指定序号的诗句,再将该诗单独写入到以该诗序号开始的行为文件名的文件中。
测试说明
平台会对你编写的代码进行测试:
测试输入:
237
预期输出: 创建文件:
237刘长卿:送灵澈.txt
- def get_poem(file):
- """读唐诗300首,定位到用户输入的序号的诗,将该首诗读取为一个字符串,返回去除末尾空白字符的字符串"""
- poem = '' # 空字符串,用于容纳目标诗
- poet_flag = False # 做一个标记,假定当前行不是目标诗
- with open(file, 'r', encoding='utf-8') as fr: # 创建文件对象
- for line in fr: # 遍历文件对象
- # 当当前行包含序号(序号用3位数,不足3位前面补0)时,将当前行拼接到poem上,改变poet_flag的值为True
- if line[:3] == str(num):
- poem = poem + line
- poet_flag = True
- elif line[0] in '0123456789': # 若当前行不包含序号但有数字
- poet_flag = False # 改变标记,后续几行不是目标诗句
- elif poet_flag: # 如果标记值为真(True)
- poem = poem + line # 将当前行拼接到字符串上
- return poem # 遍历结束后返回包含目标诗的字符串
-
-
- def write_poem(line):
- """参数是包含指定序号诗句的字符串,提取诗的标题行做为要写入的文件名,将全部诗句按顺序写入到文件中,返回诗的标题行"""
-
- title = line.split(maxsplit=1)[0] # 这里的maxsplit参数是最大拆分数,我们只需要拆分一次
- with open(title+'.txt', 'w', encoding='utf-8') as f:
- f.write(line)
- return title
-
-
- def check_file(file):
- """参数是新创建的文件名,读取新创建并写入诗句的文件,检查是否写入成功,无返回值"""
- with open(file, 'r', encoding='utf-8') as fr:
- print(fr.read()) # 文件读取为一个字符串并输出
-
-
- if __name__ == '__main__':
- filename = '/data/bigfiles/唐诗三百首.txt' # 源文件路径
- num = input() # 输入序号
- poem_str = get_poem(filename) # 读取指定序号的诗为字符串
- file_title = write_poem(poem_str) # 字符串写入文件,并返回标题
- check_file(file_title+'.txt') # 查看写入的文件,输出诗的内容
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。