上次学习爬取小说保存到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编写可视化大屏电子看板系统21-数据转曲线

    一.前言 数据转曲线,这个用的非常多,比如串口或者网络收到的数据,对特定的字节数据绘制实时的曲线,或者对历史记录存储的数据进行曲线绘制,按照约定的规则,数据转曲线绘制必须提供规则,没有规则只能对所有数 ...

  2. AngleSharp 自带的HttpRequest参数设置

    AngleSharp自带一个获取网址源码的api,可以方便的从web取得html var config = Configuration.Default.WithDefaultLoader(); var ...

  3. 按部就班--从零开始建设k8s监控(二)

    前言 书接上文,prometheus已经安装好了,并且能够对k8s的整体状态进行监控,但是我们还需要更多 环境准备 组件 版本 操作系统 Ubuntu 22.04.4 LTS docker 24.0. ...

  4. C#/.NET/.NET Core技术前沿周刊 | 第 21 期(2025年1.6-1.12)

    前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...

  5. sql server导入表的一些函数使用

    truncate table JC_BMDA; insert into JC_BMDA(bh,mc,qdmc,pym,ty) select right('0'+rtrim(convert(varcha ...

  6. uni-app封装网络请求promise

    在项目的根目录下,创建http文件夹. 然后在创建request.js文件 文件代码如下 export function apiapi(myurl,myget,mydata,tou="Acc ...

  7. VXLAN 网络中报文转发过程

    本文分享自天翼云开发者社区<VXLAN 网络中报文转发过程>,作者:刘****林 以同网段的 VM 间互通简单介绍 VXLAN 网络中的报文转发过程. 1.VM1 发送目的地址为 VM2 ...

  8. Jenkins执行Shell脚本超时错误处理指南

    Jenkins执行Shell脚本超时错误处理指南 在使用Jenkins进行自动化测试时,经常会遇到需要执行Shell脚本的情况.然而,当Shell脚本执行时间过长,超过了Jenkins配置的超时限制时 ...

  9. Project Euler 307 题解

    主要是规避误差.即求 \[\frac{k![x^k](1+x+\frac {x^2}2)^n}{n^k} \] 微分一下得到递推式.然后根据斯特林近似(byd 这里还需要 \(1\) 后的第一项..) ...

  10. Iceberg的Copy on Write和Merge On Read介绍

    一.默认的Copy on Write Copy no Write模式指的是在进行更新数据时,先将数据拷贝出来进行相应的更新,再替换掉原先的数据 二.Merge On Read读取时合并 在v2版本才支 ...