当前位置:   article > 正文

文件翻转教学python

文件翻转教学python

目录

第1关 读文件全部内容到一个字符串

第2关 读文件前n个字符

第3关 逐行读取并输出文件内容

第4关 读取文件到列表中

第5关 读取文件中的数据到二维列表

第6关 将唐诗写入到文件中


第1关 读文件全部内容到一个字符串

任务描述

本关任务:编写一个能读文件全部内容到一个字符串的小程序。

相关知识

为了完成本关任务,你需要掌握: 1.文件的打开 2.读文件到字符串

  1. file = '/data/bigfiles/出塞.txt'
  2. with open(file, mode='r', encoding='utf-8') as f: # 为文件对象命的名放在as后面
  3. txt = f.read() # 将文件全部内容读入到字符串txt中
  4. print(txt)

第2关 读文件前n个字符

任务描述

本关任务:编写一个能读文件前n个字符的小程序。

相关知识

为了完成本关任务,你需要掌握: 1.读文件到字符串

读文件到字符串

2.read(size) 当参数size为大于或等于0的整数时,读取size个字符

  1. n = int(input())
  2. file = '/data/bigfiles/出塞.txt'
  3. with open(file, mode='r', encoding='utf-8') as f: # 为文件对象命的名放在as后面
  4. txt = f.read(n) # 将文件前3个字符读入到字符串txt中
  5. print(txt)

第3关 逐行读取并输出文件内容

本关任务:编写一个能逐行读取并输出文件内容的小程序。

相关知识

为了完成本关任务,你需要掌握: 1.读文件到字符串 2.文件指针

读文件到字符串

1.f.readline() 从文件中读取单行数据;字符串末尾保留换行符(\n),空行使用 '\n' 表示,该字符串只包含一个换行符。 f.readline() 返回空字符串时,表示已经到达了文件末尾。

  1. n = input()
  2. file = '/data/bigfiles/'+n
  3. with open(file,'r',encoding = 'utf-8') as poem: # 打开文件创建文件对象,命名为poem
  4. while txt := poem.readline(): # 逐行读文件,直至文件结束
  5. print(txt.strip()) # 去除行末的换行符后输出当前读到的字符串

第4关 读取文件到列表中

任务描述

本关任务:编写一个能读取文件到列表中的小程序。

相关知识

为了完成本关任务,你需要掌握: 1.读文件到列表

读文件到列表

1.readlines() 无参数时,读取文件全部数据,返回一个列表,列表中每个元素是文件对象中的一行数据,包括行末的换行符’\n’。

  1. file = input()
  2. with open(file, 'r', encoding='utf-8') as poem: # 打开文件创建文件对象,命名为poem
  3. poem_ls = poem.readlines() # 读取文件,到第10个字符所在的行末
  4. print(poem_ls)

第5关 读取文件中的数据到二维列表

任务描述

本关任务:编写一个能读取文件中的数据到二维列表的小程序。

相关知识

为了完成本关任务,你需要掌握: 1.字符串切分 2.遍历文件转二维列表

字符串切分

1.txt.split(sep) 根据分隔符sep对字符串txt进行切分,返回一个列表。

  1. file = input()
  2. with open('/data/bigfiles/'+file, 'r', encoding='utf-8') as fr: # 打开文件创建文件对象,命名为poem
  3. score_ls = [row.strip().split(',') for row in fr] # 遍历文件对象,row为当前行
  4. print(score_ls) # 输出二维列表

第6关 将唐诗写入到文件中

根据提示,在右侧编辑器补充代码,输入一个3位数字字符表示的诗的序号,从文件“/data/bigfiles/唐诗三百首.txt”中读出指定序号的诗句,再将该诗单独写入到以该诗序号开始的行为文件名的文件中。

测试说明

平台会对你编写的代码进行测试:

测试输入: 237

预期输出: 创建文件: 237刘长卿:送灵澈.txt

  1. def get_poem(file):
  2. """读唐诗300首,定位到用户输入的序号的诗,将该首诗读取为一个字符串,返回去除末尾空白字符的字符串"""
  3. poem = '' # 空字符串,用于容纳目标诗
  4. poet_flag = False # 做一个标记,假定当前行不是目标诗
  5. with open(file, 'r', encoding='utf-8') as fr: # 创建文件对象
  6. for line in fr: # 遍历文件对象
  7. # 当当前行包含序号(序号用3位数,不足3位前面补0)时,将当前行拼接到poem上,改变poet_flag的值为True
  8. if line[:3] == str(num):
  9. poem = poem + line
  10. poet_flag = True
  11. elif line[0] in '0123456789': # 若当前行不包含序号但有数字
  12. poet_flag = False # 改变标记,后续几行不是目标诗句
  13. elif poet_flag: # 如果标记值为真(True)
  14. poem = poem + line # 将当前行拼接到字符串上
  15. return poem # 遍历结束后返回包含目标诗的字符串
  16. def write_poem(line):
  17. """参数是包含指定序号诗句的字符串,提取诗的标题行做为要写入的文件名,将全部诗句按顺序写入到文件中,返回诗的标题行"""
  18. title = line.split(maxsplit=1)[0] # 这里的maxsplit参数是最大拆分数,我们只需要拆分一次
  19. with open(title+'.txt', 'w', encoding='utf-8') as f:
  20. f.write(line)
  21. return title
  22. def check_file(file):
  23. """参数是新创建的文件名,读取新创建并写入诗句的文件,检查是否写入成功,无返回值"""
  24. with open(file, 'r', encoding='utf-8') as fr:
  25. print(fr.read()) # 文件读取为一个字符串并输出
  26. if __name__ == '__main__':
  27. filename = '/data/bigfiles/唐诗三百首.txt' # 源文件路径
  28. num = input() # 输入序号
  29. poem_str = get_poem(filename) # 读取指定序号的诗为字符串
  30. file_title = write_poem(poem_str) # 字符串写入文件,并返回标题
  31. check_file(file_title+'.txt') # 查看写入的文件,输出诗的内容

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/774207
推荐阅读
相关标签
  

闽ICP备14008679号