python的几个关于文本文件的demo脚本

 部分来自WeTab AI PRO

1.在文末添加一行文字

def add_endline(filename, texts):  # 文本末尾增加一行with open(filename, 'a') as file:file.write(f'\n{texts}')file.close()

当使用 open() 函数打开文件时,第二个参数指定了文件的打开模式。常见的文件打开模式包括:

  • 'r':读取模式(默认)。打开文件用于读取。如果文件不存在,抛出异常。
  • 'w':写入模式。打开文件用于写入。如果文件存在,则清空文件内容;如果文件不存在,则创建新文件。
  • 'a':追加模式。打开文件用于写入,在文件末尾追加内容。如果文件不存在,则创建新文件。
  • 'r+':读写模式。打开文件用于读取和写入。
  • 'b':二进制模式。与上述模式结合使用,用于处理二进制文件,如图片或视频文件。

这些模式可以单独使用,也可以与其他模式组合使用,例如 'rb' 表示以二进制模式读取文件。根据你的需求选择适当的模式来打开文件。

 2.读取文本的最后几行

def read_lastlines(filename, n):with open(filename, 'r') as file:lines = file.readlines()   # 读取到的行,格式是一个列表,每一行文字是列表的一个元素return lines[-n:]# 输出:['2#湿板抛废检测辊周长:250.0\n', '1#干板抛废检测辊周长:250.0\n', '2#干板抛废检测辊周长:250.0']

 注意,readlines()的返回值是一个列表,文本文件的每一行字符是列表的一个元素。除最后一行外,别的行都是以\n(换行符)结尾的。因此,如果进一步需要获取每一行的文字,需要用到strip()将换行符去掉

demo


filename = "example.txt"
texts = """lin1lin2lin3lin4lin5lin6
"""with open(filename, 'w') as file:file.write(texts)file.close()def read_lastlines(file_name, n):with open(file_name, 'r') as f:lines = f.readlines()return lines[-n:]last_lines = read_lastlines(filename, 3)
for line in last_lines:print(line)# print(line.strip())

上面的方法使用了readlines() 函数,缺点是需要将整个文件全部加载读取,当文件比较大时效率比较低。下面的代码使用内置的文件处理功能和collections.deque。这样可以高效地处理大文件,因为不需要读取整个文件到内存中。

collections.deque函数的详解:【Python】详解 collections.deque-CSDN博客

下面是一个实用中的示例代码,展示了如何实现这个功能:

import collectionsfilename = "example.txt"
texts = """this line1this line2this line3this line4this line5this line6
"""with open(filename, 'w') as file:file.write(texts)file.close()def read_lastlines(filename, n):with open(filename, 'r') as file:deque_lines = collections.deque(file, maxlen=n)   # 使用deque(队列),设置最大长度为nout_lines = [[line.strip('\n')] for line in list(deque_lines)]  # 去掉换行符return out_lines# 调用函数
n = 5  # 你想读取的行数
filename = 'example.txt'  # 你的文件名
last_n_lines = read_lastlines(filename, n)print(last_n_lines)# 输出:[['    this line2'], ['    this line3'], ['    this line4'], ['    this line5'], ['    this line6']]

 这个脚本将文本的最后几行读出后,去掉换行符,并且输出为一个列表

3.读取CSV表格的最后几行

下面是一个实用中的示例代码,功能是从一个CSV表格中读取最后几行并展示,这是一个很庞大的生产记录表,如果读取全部的行就很效率低下,使用了队列之后就很高效:

import os
import collections
import sysfrom PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItemdef read_lastlines(filename, n):with open(filename, 'r') as file:deque_lines = collections.deque(file, maxlen=n)  # 使用deque(队列),设置最大长度为nout_lines = [[line.strip('\n')] for line in list(deque_lines)]return out_linesdef load_csv(table_widget, file_path, n, top_row):  # top_row是置顶行的内容,一般为表格标题和列名称lines = read_lastlines(file_path, n)line_list = [line[0].split(',') for line in lines]line_list.insert(0, top_row[1])line_list.insert(0, top_row[0])# print(line_list)table_widget.setRowCount(len(line_list))table_widget.setColumnCount(len(line_list[0]))for row in range(len(line_list)):for column in range(len(line_list[row])):item = QTableWidgetItem(line_list[row][column])# print(line_list[row][column])item.setFlags(item.flags() ^ Qt.ItemIsEditable)  # 禁止编辑font = QFont()font.setFamily("Arial")  # 设置字体font.setPointSize(16)  # 设置字号item.setFont(font)table_widget.setItem(row, column, item)table_widget.resizeColumnsToContents()  # 自动调整列宽def main():app = QApplication(sys.argv)window = QMainWindow()window.resize(800, 600)window.setWindowTitle("PyQt5 QMainWindow Example")window.table_csv = QTableWidget(window)  # 为表格创建显示tablewindow.table_csv.verticalHeader().setVisible(False)  # 隐藏行号window.table_csv.horizontalHeader().setVisible(False)  # 隐藏列号top_row = [[" ", " ", " ", " ", "生产统计记录表 ", " ", " ", " ", " ", " "],["起始时间", "结束时间", "生产线", " 总产量(米)", "湿板抛废(米)", "干板抛废(米)","总成品率(%)"," 总废品率(%)", "湿板废品率(%)","干板废品率(%)"]]  # 表格的表头和首行内容file_path = 'history.csv'if not os.path.isfile(file_path):  # 文件不存在,创建文件with open(file_path, 'w') as file:  # 写方式打开文件file.write("新建的表格")  # 创建一个空文件或可以添加一些初始文本load_csv(window.table_csv, file_path, 5,top_row)  # 加载和显示csvwindow.setCentralWidget(window.table_csv)window.show()sys.exit(app.exec_())if __name__ == '__main__':main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/13079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode】每日一题 2024_5_14 完成所有任务需要的最少轮数(哈希)

文章目录 LeetCode?启动!!!题目:完成所有任务需要的最少轮数题目描述代码与解题思路 每天进步一点点 LeetCode?启动!!! 题目:完成所有任务需要的最少轮数 题…

拿到测试点如何跑

首先你要知道你测试点文件的位置,然后你要创建一个接收结果的文件,将你代码中的std::cin替换成infile,std::cout替换成outfile即可 #include <fstream> int main() {// 打开输入文件std::ifstream infile("C:\\Users\\Downloads\\P4779_1.in");// 打开输出文件…

OpenCV 图像退化与增强

退化 滤波 img_averagingcv2.blur(img2,(3,3)) #均值滤波 img_median cv2.medianBlur(img2,3) #中值滤波高斯模糊 result cv2.GaussianBlur(source, (11,11), 0)高斯噪声 def add_noise_Guass(img, mean0, var0.01): # 添加高斯噪声img np.array(img / 255, dtypefloat…

麒麟 V10 安装docker2

1. 查看系统版本 2.安装docker-ce 添加源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 安装docker yum install docker-ce --allowerasing 重启docker systemctl start docker 3.安装nvidia-container-runtime 添…

el-tooltip 提示框样式修改?

【element-plus el-tooltip官网地址&#xff1a; Tooltip 文字提示 | Element Plus】 <el-tooltippopper-class"Tooltip":content"content"placement"top"effect"light" ><span class"content">{{ content }}&l…

【TypeScript的JSX简介以及使用方法】

TypeScript 是 JavaScript 的一个超集&#xff0c;它添加了静态类型检查和面向对象编程的特性。JSX 是一种 JavaScript 的语法扩展&#xff0c;主要用于 React 组件的声明性渲染。TypeScript 完美地支持 JSX&#xff0c;并允许你为 React 组件和它们的 props 添加类型注解。 T…

C中Mysql的基本api接口

一、初始化参数返回值 二、链接服务器三、执行SQL语句注意事项 四、获取结果集4.1mysql_affected_rows和mysql_num_rows4.2mysql_store_result与mysql_free_result注意事项注意事项整体的工作流程 4.3mysql_use_result&#xff08;&#xff09;4.4mysql_field_count&#xff08…

001 侧边栏 地址增删改查 默认地址代码没完善

文章目录 user_index.htmlmyaccount_style.cssmyaccount_scripts.jsaddress_edit.htmlReceiverAddressReceiverAddressControllerReceiverAddressServiceImplIReceiverAddressServiceRFshopAppApplicationServletInitializerpom.xmlReceiverAddressMapper.xmlReceiverAddressMa…

文件存储解决方案-阿里云OSS

文章目录 1.菜单分级显示问题1.问题引出1.苹果灯&#xff0c;放到节能灯下面也就是id大于1272.查看菜单&#xff0c;并没有出现苹果灯3.放到灯具下面id42&#xff0c;就可以显示 2.问题分析和解决1.判断可能出现问题的位置2.找到递归返回树形菜单数据的位置3.这里出现问题的原因…

Golang 的 unmarshal 踩坑指南

文章目录 1. 写在最前面2. 字段区分出空字段还是未设置字段2.1 问题描述2.2 解决 3. 字段支持多种类型 & 按需做不同类型处理3.1 问题描述3.2 解决 4. 碎碎念5. 参考资料 1. 写在最前面 笔者最近在实现将内部通知系统的数据定义转化为产品定义的对外提供的数据结构。 举例…

算法学习笔记(5.0)-基于比较的高效排序算法-归并排序

##时间复杂度O(nlogn) 目录 ##时间复杂度O(nlogn) ##递归实现归并排序 ##原理 ##图例 ##代码实现 ##非递归实现归并排序 ##释 #代码实现 ##递归实现归并排序 ##原理 是一种基于分治策略的基础排序算法。 1.划分阶段&#xff1a;通过不断递归地将数组从中点处分开&…

Java 开发 框架安全:Spring 命令执行漏洞.(CVE-2022-22965)

什么叫 Spring 框架. Spring 框架是一个用于构建企业级应用程序的开源框架。它提供了一种全面的编程和配置模型&#xff0c;可以简化应用程序的开发过程。Spring 框架的核心特性包括依赖注入&#xff08;Dependency Injection&#xff09;、面向切面编程&#xff08;Aspect-Or…

【SpringBoot笔记43】SpringBoot应用程序集成spring-boot-admin监控工具

这篇文章,主要介绍SpringBoot应用程序如何集成spring-boot-admin监控工具。 目录 一、spring-boot-admin监控工具 1.1、创建admin-client客户端 (1)引入依赖

DeepSpeed

文章目录 一、关于 DeepSpeed1、DeepSpeed 是什么2、深度学习训练和推理的极致速度和规模3、DeepSpeed 的四大创新支柱1&#xff09;DeepSpeed 训练2&#xff09;DeepSpeed 推理3&#xff09;DeepSpeed 压缩4&#xff09;DeepSpeed4Science 4、DeepSpeed 软件套件DeepSpeed 库推…

React 第二十七章 Hook useCallback

useCallback 是 React 提供的一个 Hook 函数&#xff0c;用于优化性能。它的作用是返回一个记忆化的函数&#xff0c;当依赖发生变化时&#xff0c;才会重新创建并返回新的函数。 在 React 中&#xff0c;当一个组件重新渲染时&#xff0c;所有的函数都会被重新创建。这可能会…

青少年软件编程(Python)等级考试试卷(五级)2024年3月

2024.03 电子学会 青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;五级&#xff09; 一、单选题 1.以下代码的输出结果是? ) nums list(range(100, 201)) print(nums[::10]) A.[100,110,120,130,140,150,160,170,180,190,200] B.[100,101,1…

QML笔记八

QML与C交互 QML中调用C功能、使用QML或者Quick中的C接口、使用C实现自定义的QML对象 注&#xff1a; 只有QObject的派生类才能与QML交互 QML引擎集成Qt元对象系统&#xff0c;QObject的派生子类的属性、方法、信号都可以在QML中访问 C类可以被注册为一个QML实例 C类可以被注册为…

【Web后端】请求头

1、简介 请求头&#xff08;Request Headers&#xff09;是在HTTP协议中&#xff0c;客户端&#xff08;如浏览器或应用程序&#xff09;向服务器发送请求时附带的元数据。包含了关于请求的额外信息&#xff0c;有助于客户端与服务器之间的有效通信。请求头中的信息可以让服务…

.[sqlback@memeware.net].2700勒索病毒数据怎么处理|数据解密恢复

导言&#xff1a; 随着信息技术的飞速发展&#xff0c;网络安全问题愈发严峻&#xff0c;其中勒索病毒成为了企业和个人用户面临的重要威胁之一。.[sqlbackmemeware.net].2700勒索病毒作为其中的佼佼者&#xff0c;以其独特的攻击方式和强大的破坏力&#xff0c;引起了广泛关注…

【Go语言入门学习笔记】Part1.梦开始的地方

一、前言 经过一系列的学习&#xff0c;终于有时间来学习一些新的语言&#xff0c;Go语言在现在还是比较时髦的&#xff0c;多一个技能总比不多的好&#xff0c;故有时间来学一下。 二、配置环境 按照网络中已有的配置方法配置好&#xff0c;本人采用了Jetbrain的Goland&#…