IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【python办公必备基操】用python将docx,pdf,zip等格式批量转换后可存任何格式 -> 正文阅读

[Python知识库]【python办公必备基操】用python将docx,pdf,zip等格式批量转换后可存任何格式

目录

1.前提和大概思路

2.如何将pdf批量转换

3.如何将docx批量转换

4.如何将zip批量下载后统一处理

5.总结和其他


1.前提和大概思路

????????最近团队接触的一个项目在后期涉及到几千个不同格式的多种文件批量转换表格,当面对zip,doc,docx,xls,xlsx,pdf,png,jpg等多种格式,这里列举了每种类型对应的转换代码,搭配文末批量操作文件的代码和参考链接,可完美实现自动办公,下面是具体功能代码实现。

2.如何将pdf批量转换

? ? ? ? pdf转xls有几个前提条件,第一是pdf打开后必须是可复制状态(不是图片样式的),图片类型的pdf涉及到图片转xls(百度智能的接口调用即可识别坐标),第二是查看第一页是公告栏还是具体的表格内容。

? ? ? ? 首先引入库:

import pdfplumber
import xlwt

? ? ? ? 第一种类型(pdf内部即为规范表格结构):

pdf = pdfplumber.open("***.pdf")   # 打开对应pdf

num = len(pdf.pages)    #  获取pdf的页数,为后面循环用
# print(num)

first_page = pdf.pages[0]   #  为第一页 <Page:1>  若是第一页为公告 则从pdf.pages[1]开始 

table = first_page.extract_table()  # 获取表单内容  返回格式为[[],[]]
# print(table)               

? ? ? ? ?多层页面:

for i in range(0,num):   #  若是第一页为公告,循环从表格开始页第二页range(1,num)

    cirle_page = pdf.pages[i]

    # 自动读取表格信息,返回列表
    table = cirle_page.extract_table()  #  获取当前页面表单

? ? ? ? 在循环中将每页table表单内容用xlwt循环写入表格文件即可

? ? ? ? 第二种类型(pdf内部每行均是规范结构,但并非表格数据):

pdf = pdfplumber.open("***.pdf")   # 打开对应pdf

num = len(pdf.pages)    #  获取pdf的页数,为后面循环用
# print(num)

first_page = pdf.pages[0]   #  为第一页 <Page:1>  若是第一页为公告 则从pdf.pages[1]开始 

table = first_page.extract_text()  # 获取表单内容  返回格式为字符串
# print(table)               

need_list = table.split('\n')    # 将字符串每行划分为列表元素
# print(need_list)

????????多层页面:

for i in range(0,num):   #  若是第一页为公告,循环从表格开始页第二页range(1,num)

    cirle_page = pdf.pages[i]

    # 自动读取表格信息,返回列表
    table = cirle_page.extract_text()  #  获取当前页面表单
    need_list = table.split('\n')
#   print(need_list)

????????在循环中将列表里的内容做出循环进一步存储进表格即可

????????注:可以用 extract_table()的都是pdf的规整数据,即pdf中均为表格且可编辑状态即可,这种规范数据不用后期清洗脏数据,而extract_text()为获取文本内容,需要自己清洗所需要数据,在进行存储。

3.如何将docx批量转换

? ??? ? 引入docx库:

from docx import Document

????????代码如下:

word = Document('***.docx')  # 读入文件
tables = word.tables

for i in range(len(tables)):
    tb = tables[i]
    # 获取表格的行
    tb_rows = tb.rows
    # 读取每一行内容
    for i in range(len(tb_rows)):
        row_data = []
        row_cells = tb_rows[i].cells
        # 读取每一行单元格内容
        for cell in row_cells:
            row_data.append(cell.text)  # 单元格内容

       # print(row_data)   # 打印整行数据

?????????在第二层循环下用row_data列表数据写入表格或写入csv、数据库等其他格式均可

4.如何将zip批量下载后统一处理

? ? ? ? 即将zip解压后存入 :

                zip_file = zipfile.ZipFile(path) 
                 #  path为zip的绝对路径
                zip_list = zip_file.namelist()  
                 #  得到所有压缩包内文件
                for need_file in zip_list:
                    zip_file.extract(need_file, save_path)  
                # 循环解压文件到指定目录       save_path为指定存入路径
                zip_file.close()  # 释放内存

5.总结和其他

? ? ? ? 对于没有提到的png,jpg等图片格式,图片内是表格文字,测试使用过一些图文识别接口和其他训练测试集,这种对平常清晰度,图片比例正常的都是可以使用,而对长图片和模糊图片,就算经过锐化和其他图片处理也会出现数据异常,对图片数据其他要求不是很高的朋友可以试一下第三方接口等。

? ? ? ? 其余的数据格式基本都在上文代码,转换功能配合os和shutil等模块运用即可实现文件夹下对应格式文件批量转换,并用其他格式存储后保存,下面是批量检索的两种实现 :

????????检索第一种(利用os检索当前所有文件,对所有文件名切分后获得后缀名):

list_need = os.listdir(save_path)    #  对应需检索路径
for last in list_need:   
    last_name = last.split('.')[1]   #  获取后缀名
    if last_name == '***':          #  对应后缀采用对应转换
    
 

·? ? ? ? 检索第二种(利用os检索当前所有文件,endpoint检索后缀名,返回所有绝对路径):

def walk_files(path,endpoint=None):
    file_list = []
    for root,dirs,files in os.walk(path):
        for file in files:
            file_path = os.path.join(root,file)
            if file_path.endswith(endpoint):
                file_list.append(file_path)

    return file_list

if __name__ == '__main__':

    need_path = f"****"     #  对应需检索路径

    text_list = walk_files(need_path, endpoint=".***")  #   ***即可填doc/zip等

????????只是学习的途中有一些新的发现,分享给大家,希望对你们有帮助?。?

????????欢迎看到这篇的你们提出宝贵意见,一起交流学习。

? ? ? ? 对文件夹的批量操作参考:

python获取文件夹下所有文件的两种方式_埃菲尔没有塔尖的博客-CSDN博客_python获取目录下所有文件

?? ? ? ? 利用os和shutil做系统文件处理参考:

Python文件与目录-os模块和shutil模块详解_吾仄lo咚锵的博客-CSDN博客

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-06-01 15:11:50  更:2022-06-01 15:11:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:04:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码