Python办公自动化之TXT

news2024/10/10 13:55:06

在日常办公中,我们常常需要处理大量的 TXT 文件,比如记录日志、存储数据或是阅读文件内容。Python 作为一款高效的编程语言,可以轻松完成这些任务,为我们的办公流程提供极大的便利。那么,如何利用 Python 办公自动化来高效处理 TXT 文件呢?

如何利用 Python 来高效地读取、写入和处理 TXT 文件?是否有快速上手的方法,可以让你轻松掌握并应用到日常工作中?接下来,我们将为你详细解答。

上几篇分享了Python在Excel、Word、PPT和PDF方面的办公自动化,这次和大家分享TXT文件办公自动化。

 

一  安装需要的库

1. 内置open函数:可用于打开,关闭TXT文件。

2. re库:如果需要对TXT文件内容进行正则表达式匹配操作时使用。

3. os库:用于处理文件相关的操作系统操作,如文件重命名、删除、获取文件大小等。

4. linecache库:适合于快速读取大的TXT文件中的特定行,无需将整个文件读入内存。

 

 

二 读取TXT文件

  • 整体读取

使用内置open函数,以只读模式'r'打开文件,再用read方法读取内容。

with open('example.txt','r')as f:
    content =f.read()
    print(content)

 

  • 逐行读取

同样用open函数打开文件,通过循环逐行读取。

with open('example.txt', 'r')as f:
    for line in f:
        print(line.strip())

 

  • 读取特定行

先导入linecache库,再用getline方法读取指定行。

import linecache


line = linecache.getline('example.txt',3)
# 读取第3行
print(line.strip())

 

 

三 对比两个TXT文件

  • 逐行对比

逐行比较两个文件的内容。

def compare_files(file1_path, file2_path):
    with open(file1_path, 'r') as f1, open(file2_path, 'r') as f2:
        lines1 = f1.readlines()
        lines2 = f2.readlines()

        min_lines = min(len(lines1), len(lines2))

        for i in range(min_lines):
            if lines1[i].strip() != lines2[i].strip():
                return False

    return len(lines1) == len(lines2)

file1 = 'text1.txt'
file2 = 'text2.txt'
result = compare_files(file1, file2)
if result:
    print('两个文件内容相同')
else:
    print('两个文件内容不同')

 

  • 使用difflib库进行更详细的对比

difflib库可以生成两个文件之间差异的详细报告。

import difflib


def compare_files_difflib(file1_path, file2_path):
    with open(file1_path, 'r') as f1, open(file2_path, 'r') as f2:
        content1 = f1.readlines()
        content2 = f2.readlines()
        d = difflib.Differ()
        diff = list(d.compare(content1, content2))
    for line in diff:
        print(line)

file1 = 'text1.txt'
file2 = 'text2.txt'
compare_files_difflib(file1, file2)

 

 

四 过滤TXT文件内容

  • 基于字符串操作

过滤包含特定字符串的行。

with open('input.txt', 'r') as infile, open('output.txt', 'w') as outfile:
    for line in infile:
        if 'error' not in line.lower():
            outfile.write(line)

 

  • 使用正则表达式(re库)

过滤符合特定正则表达式模式的内容。

import re

with open('input.txt', 'r') as infile, open('output.txt', 'w') as outfile:
    for line in infile:
        if not re.match(r'^\d', line): 
            outfile.write(line)

 

  • 按行号过滤(结合内置函数与逻辑判断)

假设要过滤掉第3到第5行(行号从1开始)。

with open('input.txt', 'r') as infile, open('output.txt', 'w') as outfile:
    lines = infile.readlines()
    for i, line in enumerate(lines, 1):
        if i < 3 or i > 5:
            outfile.write(line)

五 合并多个TXT文件

  • 逐个读取并写入

假设要合并的TXT文件都在同一个文件夹下,文件名为file1.txt、file2.txt等。

def merge_txt_files(output_file, *input_files):
    with open(output_file, 'w') as outfile:
        for input_file in input_files:
            with open(input_file, 'r') as infile:
                outfile.write(infile.read())

# 示例用法
merge_txt_files('merged_file.txt', 'file1.txt', 'file2.txt', 'file3.txt')

 

  • 一次性读取所有文件内容再合并(适用于小文件)。

    def merge_txt_files(output_file, *input_files):
        contents = []
        for input_file in input_files:
            with open(input_file, 'r') as infile:
                contents.append(infile.read())
        with open(output_file, 'w') as outfile:
            outfile.write(''.join(contents))
    
    # 示例用法
    merge_txt_files('merged_file.txt', 'file1.txt', 'file2.txt', 'file3.txt')

 

六 将TXT文件进行格式转换

  • 转换为CSV(逗号分隔值)格式。

import csv


def txt_to_csv(txt_file_path, csv_file_path):
    with open(txt_file_path, 'r') as txt_file:
        lines = txt_file.readlines()
    with open(csv_file_path, 'w', newline='') as csv_file:
        writer = csv.writer(csv_file)
        for line in lines:
            data = line.strip().split(' ')
            writer.writerow(data)

txt_file = 'input.txt'
csv_file = 'output.csv'
txt_to_csv(txt_file, csv_file)

 

  • 转换为JSON格式(简单示例,假设TXT每行是一个键值对)。

import json


def txt_to_json(txt_file_path, json_file_path):
    data = {}
    with open(txt_file_path, 'r') as txt_file:
        lines = txt_file.readlines()
        for line in lines:
            parts = line.strip().split(':')
            if len(parts) == 2:
                key = parts[0].strip()
                value = parts[1].strip()
                data[key] = value
    with open(json_file_path, 'w') as json_file:
        json.dump(data, json_file)

txt_file = 'input.txt'
json_file = 'output.json'
txt_to_json(txt_file, json_file)

在数据化办公的今天,越来越多的企业希望通过自动化工具来简化繁琐的文件处理流程。Python 的简单易用和高效能,使得其成为办公自动化中的佼佼者。不论是数据分析师、行政人员,还是开发者,都可以通过 Python 自动化办公,提升工作效率。 

今天我们分享了使用Python进行TXT文件的多种办公自动化方法。从读取,对比,过滤,合并、转换格式等内容。掌握这些技巧,无疑将使您在数据处理与办公自动化的道路上更加游刃有余。

Python 提供了便捷的文件处理功能,不论是 TXT 文件的读取、写入,还是数据的提取和保存,都能得心应手地完成。掌握这些技能,将使你的日常工作更加轻松高效。

“让自动化处理代替重复劳动,让代码帮助你在文件海洋中轻松遨游。”

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

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

相关文章

PDFPatcher:一个无所不能的开源PDF处理工具

如果你工作中&#xff0c;经常需要处理PDF文件&#xff0c;那这款工具绝对可以满足你的所有需求&#xff0c;PDFPatcher一款功能强大的开源PDF处理工具。 01 项目简介 这是一款基于.NET Framework 4.0 到 4.8 版本开发的开源工具&#xff0c;主要采用 iText 和 MuPDF 这两个开…

快速了解2024与AI相关的诺贝尔奖大佬重要知识!

北京时间10月8日下午5点45分许&#xff0c;2024年诺贝尔物理学奖揭晓。美国普林斯顿大学科学家约翰霍普菲尔德&#xff08;John J. Hopfield&#xff09;和加拿大多伦多大学科学家杰弗里辛顿&#xff08;Geoffrey E. Hinton&#xff09;获奖&#xff0c;以表彰他们“基于人工神…

嵌入式面试——FreeRTOS篇(四) 信号量

本篇为&#xff1a;FreeRTOS信号量篇 信号量 1、什么是信号量 答&#xff1a;信号量是一种解决同步问题的机制&#xff0c;可以实现对共享资源的有序访问。 2、信号量简介 答&#xff1a; 当计数值大于0&#xff0c;表示有信号量资源。当释放信号量&#xff0c;信号量计数…

探索利用人工智能追踪逃犯的新技术

介绍 论文地址&#xff1a;https://arxiv.org/abs/2404.12626 近年来&#xff0c;"追逃游戏 "引起了人们的广泛关注。"追逃游戏 "模拟了多组追捕者与单个逃犯之间的追捕游戏。这种博弈发生在城市道路网等图上&#xff0c;有效地找到这种博弈的策略具有多种…

10月9-10日,优阅达邀您参与 2024 新加坡科技周,一站式体验亚洲前沿技术!

一场不容错过的亚洲商业技术盛会将于新加坡滨海湾金沙会展中心盛大开幕。 当全球化的浪潮席卷每一个角落&#xff0c;中国科技企业正站在新的起点&#xff0c;迎接出海的挑战与机遇。 一场不容错过的亚洲商业技术盛会 TECH WEEK SINGAPORE&#xff08;点击报名新加坡科技周&am…

HyperWorks基于几何投影的网格变形

在Altair&#xff08;HyperWorks&#xff09;里&#xff0c;使用本节将演示如何通过 line difference 功能&#xff0c;将已有网格以几何图形为目标进行投影&#xff0c;以生成全新的网格模型。 图 7-5 网格变形模型的状态 Step01&#xff1a;读取模型。 (1) 打开文件 Exerci…

C++入门基础知识106—【关于C++continue 语句】

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于C continue 语句的相关内容&#xff01;…

打不死的超强生命力

水熊虫是你可能听说过的小生物&#xff0c;它们能够在极端环境中生存&#xff0c;堪称地球上的“超强幸存者”。数十年来&#xff0c;科学家们试图通过各种极端实验杀死它们&#xff0c;但无论是把它们以900米/秒的速度发射&#xff0c;还是将它们暴露在宇宙辐射下&#xff0c;…

【含开题报告+文档+PPT+源码】基于springBoot+vue超市仓库管理系统的设计与实现

开题报告 随着电子商务的快速发展和物流行业的日益壮大&#xff0c;超市仓库管理系统的重要性也日益凸显。传统的超市仓库管理方式存在许多问题&#xff0c;比如人工操作繁琐、数据统计不准确、管理效率低下等。因此&#xff0c;需要设计和实现一个高效、智能的超市仓库管理系…

c语言中有关指针的题型整理,以及一些详解

&#xff08;1&#xff09;应注意其二维数组的书写形式&#xff0c;以及逗号表达式的 &#xff08;2&#xff09;要注意数组名表示首元素地址&#xff0c;解引用之后表示元素&#xff0c;&a表示整个数组&#xff0c;1表示指向后面的&#xff0c;ptr-1又指向数组末尾&#x…

鸿蒙架构-系统架构师(七十八)

1信息加密是保证系统机密性的常用手段。使用哈希校验是保证数据完整性的常用方法。可用性保证合法用户对资源的正常访问&#xff0c;不会被不正当的拒绝。&#xff08;&#xff09;就是破坏系统的可用性。 A 跨站脚本攻击XSS B 拒绝服务攻击DoS C 跨站请求伪造攻击CSRF D 缓…

绘制YOLOv11模型在训练过程中,精准率,召回率,mAP_0.5,mAP_0.5:0.95,以及各种损失的变化曲线

一、本文介绍 本文用于绘制模型在训练过程中&#xff0c;精准率&#xff0c;召回率&#xff0c;mAP_0.5&#xff0c;mAP_0.5:0.95&#xff0c;以及各种损失的变化曲线。用以比较不同算法的收敛速度&#xff0c;最终精度等&#xff0c;并且能够在论文中直观的展示改进效果。支持…

React(一) 认识React、熟悉类组件、JSX书写规范、嵌入变量表达式、绑定属性

文章目录 一、初始React1. React的基本认识2. Hello案例2.1 三个依赖2.2 渲染页面2.3 hello案例完整代码 二、类组件1. 封装类组件2. 组件里的数据3. 组件里的函数 (重点)4. 案例练习(1) 展示电影列表 三、JSX语法1. 认识JSX2. JSX书写规范及注释3. JSX嵌入变量作为子元素4. JS…

QT 10.8

Xmind&#xff1a; QT的核心机制 QT对话框

Python Django ORM 的工作原理

在 Web 开发中&#xff0c;处理数据库是非常常见的需求&#xff0c;尤其是在构建动态应用程序时。Django 作为一个流行的 Python Web 框架&#xff0c;提供了一套强大的工具帮助开发者轻松管理数据库。Django 的 ORM&#xff08;对象关系映射&#xff0c;Object-Relational Map…

【STM32单片机_(HAL库)】4-5-2【定时器TIM】【感应开关盖垃圾桶】HC-SR04超声波模块实验

1.硬件 STM32单片机最小系统HC-SR04超声波模块 2.软件 hcsr04驱动文件添加main.c程序 #include "sys.h" #include "delay.h" #include "led.h" #include "uart1.h" #include "hcsr04.h"int main(void) {HAL_Init(); …

k8s微服务

一 、什么是微服务 用控制器来完成集群的工作负载&#xff0c;那么应用如何暴漏出去&#xff1f;需要通过微服务暴漏出去后才能被访问 Service是一组提供相同服务的Pod对外开放的接口。 借助Service&#xff0c;应用可以实现服务发现和负载均衡。 service默认只支持4层负载均…

全网首创Windows Powershell 批量创建、重命名和拷贝文件夹和文件到指定目录

哈喽大家好&#xff0c;欢迎来到虚拟化时代君&#xff08;XNHCYL&#xff09;。 “ 大家好&#xff0c;我是虚拟化时代君&#xff0c;一位潜心于互联网的技术宅男。这里每天为你分享各种你感兴趣的技术、教程、软件、资源、福利…&#xff08;每天更新不间断&#xff0c;福利…

Redis 完整指南:命令与原理详解

目录 1. Redis 概述什么是 RedisRedis 应用场景 2. 安装与启动Redis 安装步骤源代码安装使用包管理器安装&#xff08;以 Ubuntu 为例&#xff09; 编译与启动命令编客户端连接 3. Redis 存储结构KV 存储结构数据结构类型String&#xff08;字符串&#xff09;List&#xff08;…

selenium有多个frame页时的操作方法(5)

之前文章我们提到&#xff0c;在webdriver.WebDriver类有一个switch_to方法&#xff0c;通过switch_to.frame()可以切换到不同的frame页然后才再定位某个元素做一些输入/点击等操作。 比如下面这个测试网站有2个frame页&#xff1a;http://www.sahitest.com/demo/framesTest.h…