Python办公自动化之TXT

在日常办公中,我们常常需要处理大量的 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 文件的读取、写入,还是数据的提取和保存,都能得心应手地完成。掌握这些技能,将使你的日常工作更加轻松高效。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值