• 简易TXT文本小说阅读器


    上次学习爬取小说保存到txt文本文件,方便离线阅读,现在做一个简易TXT文本小说阅读器,支持手动翻页和自动翻页阅读。

    废话不多说,直接上代码,实践下。

    read_txt.py:

    1. import time
    2. def read_txt_book(file_path, start_str, per_line=3, auto_flag=False, sleep_time=3):
    3. '''
    4. @方法名称: TXT文本小说阅读器
    5. @中文注释: 读取txt文本工具,自动,手动翻页
    6. @入参:
    7. @param file_path str 文件路径
    8. @param start_str str 开始读取字符串
    9. @param per_line int 每次读取行数
    10. @param auto_flag bool 是否自动翻页
    11. @param sleep_time int 自动翻页休眠时间(秒)
    12. @出参:
    13. @返回状态:
    14. @return 0 失败或异常
    15. @return 1 成功
    16. @返回错误码
    17. @返回错误信息
    18. @param rsp_dict dict 响应容器
    19. @作 者: PandaCode辉
    20. @创建时间: 2023-09-08
    21. @使用范例: read_book('1.txt')
    22. '''
    23. try:
    24. if (not type(file_path) is str):
    25. return [0, "111111", "文件路径参数类型错误,不为字符串", [None]]
    26. if (not type(start_str) is str):
    27. return [0, "111112", "开始读取字符串参数类型错误,不为字符串", [None]]
    28. with open(file_path, mode='r', encoding="utf-8") as f:
    29. '''
    30. seek() 函数用于移动文件指针到文件的指定位置
    31. f.seek(offset, whence), f指的是file(或$你的文件名)
    32. Parameters:
    33. offset: 将光标向前移动n个位置
    34. whence: 参考位置,一般参数为0, 1, 2
    35. 0 :将开头作为参考位置
    36. 1 :将当前作为参考位置
    37. 2 :将末尾作为参考位置
    38. '''
    39. f.seek(0, 2)
    40. # tell() 函数用于判断文件指针当前所处的位置
    41. # 读取文章最末尾的光标位置
    42. end_position = f.tell()
    43. print(end_position)
    44. # 将光标移动到文件的开头
    45. f.seek(0, 0)
    46. # 开始读取字符串不为空
    47. if start_str != "":
    48. line_position = 0
    49. while True:
    50. line = f.readline()
    51. line_position += 1
    52. if start_str in line:
    53. print(f"第 {line_position} 行,内容为:{line.strip()}")
    54. break
    55. # 读取文章当前的光标位置
    56. now_position = f.tell()
    57. # 判断光标是否到文章最末尾
    58. if now_position == end_position:
    59. print('已读完')
    60. break
    61. # 判断是否自动阅读模式
    62. if auto_flag:
    63. while True:
    64. for i in range(per_line):
    65. print(f.readline(), end='')
    66. # 读取文章当前的光标位置
    67. now_position = f.tell()
    68. # 判断光标是否到文章最末尾
    69. if now_position == end_position:
    70. print('已读完')
    71. break
    72. else:
    73. # 休眠时间-3
    74. time.sleep(sleep_time)
    75. else:
    76. while True:
    77. # 读取文章当前的光标位置
    78. now_position = f.tell()
    79. # 判断光标是否到文章最末尾
    80. if now_position == end_position:
    81. print('已读完')
    82. break
    83. else:
    84. # 翻页提示符
    85. num_next = input('输入n翻下一页:')
    86. if num_next == 'n':
    87. for j in range(per_line):
    88. print(f.readline(), end='')
    89. else:
    90. print('输入错误,请重新输入')
    91. # 返回容器
    92. return [1, '000000', '读取txt文本工具', [None]]
    93. except Exception as e:
    94. print("读取txt文本工具异常," + str(e))
    95. return [0, '999999', "读取txt文本工具异常," + str(e), [None]]
    96. # 查找文本文件中的指定字符串,若存在,输出所在的函数
    97. # file_path ———— 文本文件路径
    98. # string ———— 指定要查找的字符串
    99. def TextFileSearch(file_path, start_str):
    100. with open(file_path, 'r', encoding='utf-8') as f:
    101. line_position = 0
    102. for line in f.readlines():
    103. line_position += 1
    104. if start_str in line:
    105. print(f"第 {line_position} 行,内容为:{line.strip()}")
    106. break
    107. # 主方法
    108. if __name__ == '__main__':
    109. file_path = '重生八八从木匠开始.txt'
    110. start_str = '第392章'
    111. # 查找文本文件中的指定字符串位置
    112. # TextFileSearch(file_path, start_str)
    113. # 读取txt文本工具
    114. read_txt_book(file_path, start_str, auto_flag=True)

  • 相关阅读:
    【科技与狠货】云盘变硬盘
    Linux驱动BSP (pinctrl&gpio子系统)
    数据库设计原则
    resnet解释--突破层数理论限制
    小白终于解决了在学习Go中不知道Makefile是什么的难题
    鸿蒙OpenHarmony【轻量系统烧录】 (基于Hi3861开发板)
    Unity WebGL RuntimeError: integer overflow(整数溢出问题)
    在线等!!!新版考纲在国内通过率有多少?
    【ES6】
    Git多分支 远程仓库 协同开发以及解决冲突
  • 原文地址:https://blog.csdn.net/xionghui2007/article/details/132799846