简易TXT文本小说阅读器
上次学习爬取小说保存到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文本小说阅读器的更多相关文章
- PC免费的小说阅读器,可提取章节
最近自己做了个小说阅读器,就是下面这个东西啦,目前仅支持Window系统: 个人喜欢在电脑.平板上等大屏幕设备上阅读小说或电子书籍.原因其一是屏幕足够大,可以选择更舒服的字体大小:其二是觉得小屏幕看字 ...
- 读取本地HTML的小说阅读器应用源码项目
该源码是一个不错的读取本地HTML的小说阅读器,读取本地HTML的小说阅读器,并且源码也比较简单的,非常适合我们的新手朋友拿来学习,有兴趣的朋友研究下. 源码下载: http://code.662p. ...
- 开发微信小程序——古龙小说阅读器
概述 由于面试的关系接触了一下微信小程序,花了2晚上开发了一个带书签功能的古龙小说阅读器,并且已经提交审核等待发布.这篇博文记录了我的开发过程和对微信小程序的看法,供以后开发时参考,相信对其他人也有用 ...
- android优化中国风应用、完整NBA客户端、动态积分效果、文件传输、小说阅读器等源码
Android精选源码 android拖拽下拉关闭效果源码 一款优雅的中国风Android App源码 EasySignSeekBar一个漂亮而强大的自定义view15 android仿蘑菇街,蜜芽宝 ...
- Vue小说阅读器(仿追书神器)
一个vue阅读器项目,目前已升级到2.0,阅读器支持横向分页并滑动翻页(没有动画,需要动画的可以自己设置,增加transitionDuration即可) 技术栈 vue全家桶+mint-ui gith ...
- s3c2440 上txt 小说阅读器
文件结构 Makefile: CROSSCOMPILE := arm-linux- CFLAGS := -Wall -O2 -c LDFLAGS := -lm -lfreetype CC := $(C ...
- 【android开发】小说阅读器
新人开发理念 1 activity 是每个功能页面的入口 2 动画效果需要配合资源文件中,动画的定义 3 文件的读取是有权限控制的 4 布局应该尽量简单,这样才能让程序跑的飞快 前记 重新开始一个新的 ...
- UWP_小说在线阅读器:功能要求与技术要求
学了WP开发也有一年了,也没做过什么软件的.17年进发UWP,锻炼自己一下.做一个开源的小说阅读器吧. 既然开发一个软件.所以要设计一下吧. 功能要求: 可能要用到的技术,这个吗,这就是遇到问题在解决 ...
- 电子书及阅读器Demo
电子书阅读器(Kindle,电子纸技术.LCD.电子墨水技术等: 亚马逊/当当网站) 电子书产业可分5大环节:内容供应商.数字格式制作商.内容流通服务平台.传输平台以及终端阅读器产品. 全球电子书市 ...
- android小说阅读源码、bilibili源码、MVP新闻源码等
Android精选源码 一款基于 MVP+RxJava2+Retrofit2 的应用--熊猫眼 android 五子棋源码分享 android实现全国地图点击效果 android实现立体图案绘制的代码 ...
随机推荐
- Qt数据库应用4-数据打印到纸张
一.前言 数据能够打印到pdf文件,当然可以打印到纸张,而且使用qprinter默认就是打印到纸张的,上一篇文章写得功能是打印到pdf,其实还要单独特殊设置打印到文件,并指定格式为pdf.不指定输出文 ...
- Pycharm IDE中导入和移除python项目
1.Pycharm导入python项目 进入PyCharm后,点击File→Open,然后在弹窗中选择需要导入项目的文件夹: 打开了python项目后,需要配置该项目对应的python才可以正常运行: ...
- 字符编码技术专题(一):快速理解ASCII、Unicode、GBK和UTF-8
本文由阮一峰(ruanyifeng.com)分享,本文收录时有内容修订和排版优化. 1.引言 今天中午,我突然想搞清楚 Unicode 和 UTF-8 之间的关系,就开始查资料. 这个问题比我想象的复 ...
- salesforce零基础学习(一百四十二)在Formula字段中如何通过Datetime字段显示Local Time(适配DST)
背景: 我们需求是显示Date Time类型的Time信息,比如我们想要在report中基于Hour Of Created Date进行分组,从而想要了解到一段时间内什么时间是数据创建的高峰期,不同的 ...
- Note -「基本子串结构」速通笔记
学习自 crashed 的<一类基础子串数据结构>摘抄及注解, 略过了一些 crashed 口中 "用不上" 的东西. 这里是速通笔记, 希望快速学习技巧的读者可以 ...
- npm run的时候报错: this[kHandle] = new _Hash(algorithm, xofLen);
在前面加入以下配置信息 set NODE_OPTIONS=--openssl-legacy-provider && 后面跟原来的启动配置信息 另外一种方式,可以避免修改package. ...
- C#中的内部函数(子函数)
private bool GetMedicalAdvice(string zyID, out DataTable dtM, out DataTable dtD) { bool result = fal ...
- uni-app中picker-view(常见的坑)出现选择值与输出的值不一致
今天遇见一个问题,在使用picker-view的时候: 出现我选择的值和输出的值不一致: 经过与官方的demo做对比发现: 官方是实时的将值从组件中向上抛出去: 值是从change事件传递出去的 而我 ...
- 并发编程 - 线程同步(五)之原子操作Interlocked详解二
上一章我们学习了原子操作Interlocked类的几个常用方法,今天我们将继续学习该类的其他方法. 01.Exchange方法 该方法用于原子的将变量的值设置为新值,并返回变量的原始值.该方法共有14 ...
- 春节福利来啦!Mac用户快来抽大奖
亲爱的Mac俱乐部(MaClub)用户及所有果粉朋友们: 值此新春佳节之际,Mac俱乐部特别推出春节抽奖活动,以回馈广大用户长期以来的支持与厚爱.我们精心准备了丰富的奖品,希望能为您的新年增添一份惊喜 ...