首页 > 其他分享 >简易TXT文本小说阅读器

简易TXT文本小说阅读器

时间:2023-09-08 15:35:55浏览次数:45  
标签:TXT file str 阅读器 txt position line 文本 读取

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

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

read_txt.py:

import time


def read_txt_book(file_path, start_str, per_line=3, auto_flag=False, sleep_time=3):
    '''
     @方法名称: TXT文本小说阅读器
     @中文注释: 读取txt文本工具,自动,手动翻页
     @入参:
         @param file_path str 文件路径
         @param start_str str 开始读取字符串
         @param per_line int 每次读取行数
         @param auto_flag bool 是否自动翻页
         @param sleep_time int 自动翻页休眠时间(秒)
     @出参:
         @返回状态:
             @return 0 失败或异常
             @return 1 成功
         @返回错误码
         @返回错误信息
         @param rsp_dict dict 响应容器
     @作    者: PandaCode辉
     @创建时间: 2023-09-08
     @使用范例: read_book('1.txt')
     '''

    try:
        if (not type(file_path) is str):
            return [0, "111111", "文件路径参数类型错误,不为字符串", [None]]
        if (not type(start_str) is str):
            return [0, "111112", "开始读取字符串参数类型错误,不为字符串", [None]]

        with open(file_path, mode='r', encoding="utf-8") as f:
            '''
                seek() 函数用于移动文件指针到文件的指定位置
                f.seek(offset, whence), f指的是file(或$你的文件名)
                Parameters:
                offset: 将光标向前移动n个位置
                whence: 参考位置,一般参数为0, 1, 2
                0 :将开头作为参考位置
                1 :将当前作为参考位置
                2 :将末尾作为参考位置
            '''
            f.seek(0, 2)
            # tell() 函数用于判断文件指针当前所处的位置
            # 读取文章最末尾的光标位置
            end_position = f.tell()
            print(end_position)
            # 将光标移动到文件的开头
            f.seek(0, 0)
            # 开始读取字符串不为空
            if start_str != "":
                line_position = 0
                while True:
                    line = f.readline()
                    line_position += 1
                    if start_str in line:
                        print(f"第 {line_position} 行,内容为:{line.strip()}")
                        break
                    # 读取文章当前的光标位置
                    now_position = f.tell()
                    # 判断光标是否到文章最末尾
                    if now_position == end_position:
                        print('已读完')
                        break
            # 判断是否自动阅读模式
            if auto_flag:
                while True:
                    for i in range(per_line):
                        print(f.readline(), end='')
                    # 读取文章当前的光标位置
                    now_position = f.tell()
                    # 判断光标是否到文章最末尾
                    if now_position == end_position:
                        print('已读完')
                        break
                    else:
                        # 休眠时间-3秒
                        time.sleep(sleep_time)
            else:
                while True:
                    # 读取文章当前的光标位置
                    now_position = f.tell()
                    # 判断光标是否到文章最末尾
                    if now_position == end_position:
                        print('已读完')
                        break
                    else:
                        # 翻页提示符
                        num_next = input('输入n翻下一页:')
                        if num_next == 'n':
                            for j in range(per_line):
                                print(f.readline(), end='')
                        else:
                            print('输入错误,请重新输入')
        # 返回容器
        return [1, '000000', '读取txt文本工具', [None]]

    except Exception as e:
        print("读取txt文本工具异常," + str(e))
        return [0, '999999', "读取txt文本工具异常," + str(e), [None]]


# 查找文本文件中的指定字符串,若存在,输出所在的函数
# file_path ———— 文本文件路径
# string  ———— 指定要查找的字符串
def TextFileSearch(file_path, start_str):
    with open(file_path, 'r', encoding='utf-8') as f:
        line_position = 0
        for line in f.readlines():
            line_position += 1
            if start_str in line:
                print(f"第 {line_position} 行,内容为:{line.strip()}")
                break


# 主方法
if __name__ == '__main__':
    file_path = '重生八八从木匠开始.txt'
    start_str = '第392章'
    # 查找文本文件中的指定字符串位置
    # TextFileSearch(file_path, start_str)
    # 读取txt文本工具
    read_txt_book(file_path, start_str, auto_flag=True)

 

标签:TXT,file,str,阅读器,txt,position,line,文本,读取
From: https://www.cnblogs.com/xh2023/p/17687711.html

相关文章

  • LabVIEW图标编辑器中的文本变得模糊
    问题详述在LabVIEW图标编辑器中将文本添加到VI图标时,如果我将字体大小设置为小于10,文本会变得模糊。当字体大小设置为大于11时,文本会正常地显示,但是字体则变得太大而无法放入图标中。真难看!解决方案对于某些字体,这些字体比默认字体更详细,并且显示为像素化,可能会发生这种情......
  • sed文本流式编辑器复习
    Linux持续学习者的实用命令:sed原创 运维家 运维家 2023-09-0316:00 发表于北京收录于合集#linux39个#文本编辑器1个引言作为一名Linux持续学习者,我们经常需要对文本内容进行处理或修改,这时候sed命令就能派上用场了。sed是一个强大的流式文本编辑器,它可以在......
  • 直播软件源码,html文本框选中后显示其它颜色
    直播软件源码,html文本框选中后显示其它颜色1.texthtml <inputtype="text"name="title"id="title">​CSS #title:focus{   outline:none;   border:1pxsolid#fafafa;   -webkit-box-shadow:0px0px6px#ffbfbf;   -moz-box-shadow......
  • HTML5超文本链接和文本标签
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title><......
  • 在Canvas上进行文本输入及其它html元素操作
    问题使用canvas绘制了一个表格,想要在上面进行编辑操作,但canvas并不支持修改操作思路通过给html元素设置绝对定位,遮盖canvas上的指定位置,所有编辑操作都在元素上进行,也可以将元素的值绘制到canvas上,示例demo如下:点击查看代码<!DOCTYPEHTML><html><style></style><bodys......
  • 如何在jupyter notebook中批量替换文本
    在JupyterNotebook中,您可以使用以下步骤来批量替换文本:1.打开JupyterNotebook并导航到包含需要替换文本的笔记本。2.在需要替换的代码或文本的单元格中,使用快捷键`Ctrl+F`(Windows和Linux)或`Command+F`(Mac)打开查找工具。3.在查找工具中输入您要替换的文本,并点击查找下......
  • Uchardet C++源码编译步骤 文本编码检测命令行工具 Command line
    从官网 https://www.freedesktop.org/wiki/Software/uchardet/下载源码 https://www.freedesktop.org/software/uchardet/releases/=====================================================================================下载编译工具:Cmake和mingw64https://cmake.org......
  • 谷歌优化之如何编写和提交 robots.txt 文件
    您可以使用robots.txt文件控制抓取工具可以访问您网站上的哪些文件。robots.txt文件应位于网站的根目录下。因此,对于网站 www.example.com,robots.txt文件的路径应为 www.example.com/robots.txt。robots.txt是一种遵循漫游器排除标准的纯文本文件,由一条或多条规则组成。每条......
  • cmd合并多个txt到一个
    copy*.txt1.txt......
  • 如何在Vue项目中引入富文本编辑器(wang-enduit)
    介绍官网https://www.wangeditor.com/安装yarnadd@wangeditor/editornpminstall@wangeditor/editor--saveyarnadd@wangeditor/editor-for-vue@nextnpminstall@wangeditor/editor-for-vue@next--save使用自定义上传图片,先转base64,转blob,上传服务器<divid="wa......