上次学习爬取小说保存到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. Qt编写地图综合应用13-获取边界点

    一.前言 获取边界点一般和行政区划搭配起来使用,比如用户输入一个省市的名称,然后自动定位到该省市,然后对该轮廓获取所有边界点集合输出到js文件,最后供离线使用,获取边界点还有一个功能就是获取当前区域内 ...

  2. 超实用 JMeter BeanShell Sampler 教程

    超实用 JMeter BeanShell Sampler 教程 宝子们,今天咱继续深挖 JMeter 里超厉害的 BeanShell Sampler,这次多来点实际工作中的例子,让你彻底搞懂它! 一. ...

  3. 《C++并发编程实战》读书笔记(3):并发操作的同步

    1.条件变量 当线程需要等待特定事件发生.或是某个条件成立时,可以使用条件变量std::condition_variable,它在标准库头文件<condition_variable>内声明 ...

  4. biancheng-Spring MVC-HandlerAdapter

    二.HandlerAdapter 根据 Handler 来找到支持它的 HandlerAdapter,通过 HandlerAdapter 执行这个 Handler 得到 ModelAndView 对象 ...

  5. 个人数据保全计划:部署joplin server笔记同步服务

    前言 在这个数据爆炸的时代,个人数据的价值愈发凸显,成为我们生活与工作中无可替代的重要资产.上一篇文章里,我介绍了从印象笔记迁移至 Joplin 的过程,这是我寻求数据自主掌控的关键一步.在探索同步方 ...

  6. 天翼云GPU云主机:共享信息技术与虚拟机的完美融合

    本文分享自天翼云开发者社区<天翼云GPU云主机:共享信息技术与虚拟机的完美融合>,作者:不知不觉 在云计算领域,GPU云主机已经成为了一个备受瞩目的焦点.它的出现改变了传统IT架构的方式, ...

  7. Windows11本地部署DeepSeek加速

    技术背景 在上一篇文章中我们介绍了在Ubuntu Linux操作系统上部署了一个DeepSeek-R1:14B,再通过其他电脑远程调用模型进行生成的方法.这里我们介绍一下Windows11安装Olla ...

  8. 概率学习(Genshin中)

    目前待补充:停时定理的部分例题. 定义 首先定义样本空间 \(\Omega\),是所有样本点(结果)的集合. 随机事件 \(A\) 是样本空间的子集. 定义事件和为事件并,积为事件交. 事件域 \(\ ...

  9. Hetao P1031 萌萌题 题解 [ 蓝 ] [ 线性 dp ]

    萌萌题:一道结合了观察性质的线性 dp. 观察 我们先考虑极端情况:所有数相同,所有数降序排列两种情况. 对于所有数相同的情况,我们发现,最终可以合并出来的区间,最多只有 \(n \log n\) 个 ...

  10. HT-018 Div3 能量消耗 题解 [ 绿 ] [ 线性 dp ] [ 前缀和优化 ]

    能量消耗:一个前缀和优化 dp 的大典题,要是数据水一点 \(O(n^3)\) 都能硬草过去. 思路 显然,定义 \(dp[i]\) 为考虑前 \(i\) 个塔,并且将第 \(i\) 个塔开启,将前面 ...