上次学习爬取小说保存到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文本小说阅读器的更多相关文章

  1. PC免费的小说阅读器,可提取章节

    最近自己做了个小说阅读器,就是下面这个东西啦,目前仅支持Window系统: 个人喜欢在电脑.平板上等大屏幕设备上阅读小说或电子书籍.原因其一是屏幕足够大,可以选择更舒服的字体大小:其二是觉得小屏幕看字 ...

  2. 读取本地HTML的小说阅读器应用源码项目

    该源码是一个不错的读取本地HTML的小说阅读器,读取本地HTML的小说阅读器,并且源码也比较简单的,非常适合我们的新手朋友拿来学习,有兴趣的朋友研究下. 源码下载: http://code.662p. ...

  3. 开发微信小程序——古龙小说阅读器

    概述 由于面试的关系接触了一下微信小程序,花了2晚上开发了一个带书签功能的古龙小说阅读器,并且已经提交审核等待发布.这篇博文记录了我的开发过程和对微信小程序的看法,供以后开发时参考,相信对其他人也有用 ...

  4. android优化中国风应用、完整NBA客户端、动态积分效果、文件传输、小说阅读器等源码

    Android精选源码 android拖拽下拉关闭效果源码 一款优雅的中国风Android App源码 EasySignSeekBar一个漂亮而强大的自定义view15 android仿蘑菇街,蜜芽宝 ...

  5. Vue小说阅读器(仿追书神器)

    一个vue阅读器项目,目前已升级到2.0,阅读器支持横向分页并滑动翻页(没有动画,需要动画的可以自己设置,增加transitionDuration即可) 技术栈 vue全家桶+mint-ui gith ...

  6. s3c2440 上txt 小说阅读器

    文件结构 Makefile: CROSSCOMPILE := arm-linux- CFLAGS := -Wall -O2 -c LDFLAGS := -lm -lfreetype CC := $(C ...

  7. 【android开发】小说阅读器

    新人开发理念 1 activity 是每个功能页面的入口 2 动画效果需要配合资源文件中,动画的定义 3 文件的读取是有权限控制的 4 布局应该尽量简单,这样才能让程序跑的飞快 前记 重新开始一个新的 ...

  8. UWP_小说在线阅读器:功能要求与技术要求

    学了WP开发也有一年了,也没做过什么软件的.17年进发UWP,锻炼自己一下.做一个开源的小说阅读器吧. 既然开发一个软件.所以要设计一下吧. 功能要求: 可能要用到的技术,这个吗,这就是遇到问题在解决 ...

  9. 电子书及阅读器Demo

    电子书阅读器(Kindle,电子纸技术.LCD.电子墨水技术等: 亚马逊/当当网站)  电子书产业可分5大环节:内容供应商.数字格式制作商.内容流通服务平台.传输平台以及终端阅读器产品. 全球电子书市 ...

  10. android小说阅读源码、bilibili源码、MVP新闻源码等

    Android精选源码 一款基于 MVP+RxJava2+Retrofit2 的应用--熊猫眼 android 五子棋源码分享 android实现全国地图点击效果 android实现立体图案绘制的代码 ...

随机推荐

  1. IDEA中导入其它由Maven管理的java web项目并运行,提示“Error:(3, 38) java: 程序包org.springframework.stereotype不存在”问题的解决

    现象描述: IDEA中导入其它由Maven管理的java web项目并运行,提示"Error:(3, 38) java: 程序包org.springframework.stereotype不 ...

  2. 开源即时通讯IM框架MobileIMSDK的Uniapp端开发快速入门

    ► 相关链接: ①MobileIMSDK-Uniapp端的详细介绍 ② MobileIMSDK-Uniapp端的开发手册new(* 精编PDF版) 一.理论知识准备 您需要对Uniapp和Vue开发有 ...

  3. 【译】在分析器中使用 Meter Histogram(直方图)解锁见解

    您是否正在与应用程序中的性能瓶颈作斗争?不要再观望了!Visual Studio 2022 在其性能分析套件中引入了 Meter Histogram(直方图)功能,为您提供了前所未有的分析和可视化直方 ...

  4. linux 手动释放内存

    在 Linux 系统中,内存管理通常由系统自动处理,但在某些情况下,手动释放内存可能是必要的.例如,当业务应用比较繁忙时会频繁存取文件,物理内存会被缓存大量占用,有时会出现内存不足的情况发生,甚至会导 ...

  5. 系统提示msvcp120.dll丢失如何解决

    最近有位win7系统用户反映,自己安装完游戏开始玩的时候,系统却提示:示msvcp120.dll丢失,这导致了游戏无法正常运行,这让用户很是苦恼,不知道电脑如何解决,为此非常苦恼,那么win7系统提示 ...

  6. 一款基于 .NET8 + Vue 开源、免费、跨平台的企业级在线考试系统

    前言 今天大姚给大家分享一款基于 .NET8 + Vue 开源.免费(AGPL-3.0开源协议).跨平台的企业级在线考试系统:XBLMS. 项目介绍 XBLMS是一款基于 .NET8 + Vue 开源 ...

  7. 图解ArrayList源码

    初始化数组长度为空时, 懒加载 add方法 初始无参构造器 第一次添加 public boolean add(E e) {    // 确定容量 动态扩容 size 初始 0    ensureCap ...

  8. CudaSPONGE与PySAGES初步性能测试

    技术背景 在前面的一篇博客中,我们介绍过CudaSPONGE的基础使用方法.CudaSPONGE调用Python接口函数以及CudaSPONGE结合增强采样软件PySAGES的使用方法.在这篇文章中, ...

  9. flutter真机调试出现flutter Launching 'app' on No Devices.

    1. flutter真机调试出现flutter Launching 'app' on No Devices. flutter Launching 'app' on No Devices. 我的是华为手 ...

  10. Qt Quick 实现一个右下角弹出消息的组件

    目录 开发环境 简介 预览图 如何使用 代码 main.qml MessageView.qml Background.qml ScroolBar.qml MessageQueueView.qml 开发 ...