在Windows和MacOS环境下实现批量doc转docx,xls转xlsx

一、引言

Python中批量进行办公文档转化是常见的操作,在windows状态下我们可以利用changeOffice这个模块很快进行批量操作。

二、在Windows环境下的解决文案

Windows环境下,如何把doc转化为docx,xls转化为xlsx?

首先,我们要安装这个第三方模块,在cmd下输入

pip install changeOffice

其次,导入这个模块

from changeOffice import change

然后,要确定文件所在的位置

c = change(".") #如果是"."则表示当前位置

最后就可以进行展示转化了,这里为了简便我们把代码写在一起形成py文件

from changeOffice import change
path = "." #这里输入文件所在的咱径
c = change(path)
c. doc2docx() #把所有的doc文件转化为docx文件
c. xls2xlsx() #把所有的doc文件转化为docx文件
c. ppt2pptx() #把所有的doc文件转化为docx文件

今天网友提问,说自己的电脑不是windows的,如何把xls转化为xlsx, 把doc转化为docx呢,经过一番探索,发现在苹果电脑上用changeOffice的老方法是解决不了这个新问题的。

我们当然也可以用软件,或者在线网站进行转化,但这样都无法实现批量转化docx和xls的功能。

三、MacOS下的解决方案

经过一番搜索,我们在网上找到了样例的代码,然后我们利用os.walk()的方法对目录下的所有文件进行遍历。最后我们把文件逐一进行转化。

1. MacOS下把doc批量转化为docx文件

import os
import subprocessfor root, folders, files in os.walk("."):for file in files:if file.endswith(".doc"):file_path = os.path.abspath(os.path.join(root, file))path = os.path.dirname(file_path)subprocess.run(["/Applications/LibreOffice.app/Contents/MacOS/soffice", "--headless", "--convert-to", "docx", file_path, "--outdir", path])os.remove(file_path)
print('Success!')

2. MacOS下把xls批量转化为xlsx文件

import os
import subprocessfor root, folders, files in os.walk("."):for file in files:if file.endswith(".xls"):file_path = os.path.abspath(os.path.join(root, file))path = os.path.dirname(file_path)subprocess.run(["/Applications/LibreOffice.app/Contents/MacOS/soffice", "--headless", "--convert-to", "xlsx", file_path, "--outdir", path])os.remove(file_path)
print('Success!')

四、学后反思

  1. 源码中我增加了一个os.remove(file_path),就是转化完会把原来的源文件进行删除,只保留转化后的文件。
  2. 进行批量转化前一定要进行备份,因为这个过程是不可逆转的。

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

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

相关文章

mysql三大日志—— 二进制日志binlog

binlog用于记录数据库执行的写入性操作,由服务层进行记录,通过追加的方式以二进制的形式保存在磁盘中。 binlog主要用于主从复制和数据恢复。 主从复制:在主机端开启binlog,然后将binlog发送到各个从机,从机存放binl…

sykwalking8.2和mysql5.7快速部署

1.SkyWalking 是什么? 分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。 提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。 2.SkyWalking 有哪些功能…

Spring Task入门案例

Spring Task 是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。 定位:定时任务框架 作用:定时自动执行某段Java代码 强调:只要是需要定时处理的场景都可以使用Spring Task 1. cron表达式 cron表达式…

Java多线程线程间的通信—wait及notify方法

线程间的相互作用 线程间的相互作用:线程之间需要一些协调通信,来共同完成一件任务。 Object类中相关的方法有两个notify方法和三个wait方法: Object (Java Platform SE 7 ) 因为wait和notify方法定义在Object类中,因此会被所有的类所继承。 这些方法都是final的,即它们…

树形dp模板

285. 没有上司的舞会 - AcWing题库 #include<iostream> #include<cstdio> #include<cstdlib> #include<string> #include<cstring> #include<cmath> #include<ctime> #include<algorithm> #include<utility> #include&…

Visual Studio 与QT ui文件

对.ui文件鼠标右键&#xff0c;然后单击 Open with…在弹出的窗口中&#xff0c;选中左侧的 Qt Designer&#xff0c;然后单击右侧的 Add 按钮&#xff0c;随后会弹出一个窗口&#xff0c;在 Program: 输入框中输入 Qt Designer 的路径&#xff0c;最后单击 OK找到 Qt Designer…

内网ip与外网ip

一、关于IP地址 我们平时直接接触最多的是内网IP。而且还可以自己手动修改ip地址。而外网ip&#xff0c;我们很少直接接触&#xff0c;都是间接接触、因为外网ip一般都是运营商管理&#xff0c;而且是全球唯一的&#xff0c;一般我们自己是无法修改的。 内网IP和外网IP是指在…

突破大模型 | Alluxio助力AI大模型训练-成功案例(一)

更多详细内容可见《Alluxio助力AI大模型训练制胜宝典》 【案例一&#xff1a;知乎】多云缓存在知乎的探索:从UnionStore到Alluxio 作者&#xff1a;胡梦宇-知乎大数据基础架构开发工程师&#xff08;内容转载自InfoQ&#xff09; 一、背景 随着云原生技术的飞速发展&#xff…

零基础看懂免费开源的Stable Diffusion

文章目录 前言Diffusion模型推理过程训练过程 Stable Diffusion模型参考 前言 前面一篇文章主要讲了扩散模型的理论基础&#xff0c;还没看过上篇的小伙伴可以点击查看&#xff1a;DDPM理论基础。这篇我们主要讲一下一经推出&#xff0c;就火爆全网的Stable Diffusion模型。St…

django中使用ajax发送请求

1、ajax简单介绍 浏览器向网站发送请求时 是以URL和表单的形式提交的post 或get 请求&#xff0c;特点是&#xff1a;页面刷新 除此之外&#xff0c;也可以基于ajax向后台发送请求&#xff08;异步&#xff09; 依赖jQuery 编写ajax代码 $.ajax({url: "发送的地址"…

filebeat多实例运行,kibana组件的基本使用

filebeat多实例运行: 1)需求 一台服务器上&#xff0c;需要运行多个filebeat实例 2)启动filebeat实例1 cat > config/11-log_tcp-to-console.yaml <<EOF filebeat.inputs: - type: log paths: - /tmp/oldboyedu-linux82/*.log # 监听TCP的参数 - type:…

centos 安装docker

1.更新你的系统: sudo yum update -y2.安装必需的软件包: Docker 需要 yum-utils, device-mapper-persistent-data 和 lvm2 软件包来运行。安装它们&#xff1a; sudo yum install -y yum-utils device-mapper-persistent-data lvm23.设置 Docker 的仓库: 使用以下命令添加 D…

关于Redis,你需要学习了解的知识

关于 Redis &#xff0c;涵盖多个方面&#xff0c;从基础概念到高级应用&#xff0c;以及最佳实践等。比如以下内容&#xff1a; 认识 Redis&#xff1a; Redis 是什么&#xff1f;它的特点和优势是什么&#xff1f;Redis 的数据结构&#xff1a;字符串、哈希、列表、集合、有序…

Kafka的下载安装以及使用

一、Kafka下载 下载地址&#xff1a;https://kafka.apache.org/downloads 二、Kafka安装 因为选择下载的是 .zip 文件&#xff0c;直接跳过安装&#xff0c;一步到位。 选择在任一磁盘创建空文件夹&#xff08;不要使用中文路径&#xff09;&#xff0c;解压之后把文件夹内容…

Redis 持久化

一、RDB 1.1 RDB持久化流程 fork子进程是阻塞的&#xff0c;如果同时开启RDB和AOF&#xff0c;默认使用AOF。 1、Redis父进程首先判断: 当前是否在执行save&#xff0c;或bgsave/bgrewriteaof (aof文件重写命令)的子进程&#xff0c;如果在执行则bgsave命令直接返回。 2、父进…

剑指offer专题2:队列和栈

用两个栈模拟队列 class CQueue {stack<int> stack1;stack<int> stack2; public:CQueue() {}void appendTail(int value) {stack1.push(value);}int deleteHead() {int val-1;if(!stack2.empty()){val stack2.top();stack2.pop();}else if(!stack1.empty()){while…

【左神算法刷题班】第18节:汉诺塔问题、岛屿问题、最大路径和问题

第18节 题目1&#xff1a;汉诺塔问题&#xff08;变体&#xff09; 体系学习班18节有讲暴力递归的汉诺塔原题。 给定一个数组arr&#xff0c;长度为N&#xff0c;arr中的值只有1&#xff0c;2&#xff0c;3三种 arr[i] 1&#xff0c;代表汉诺塔问题中&#xff0c;从上往下第…

Terraform 系列-批量创建资源时如何根据某个字段判断是否创建

系列文章 Terraform 系列文章Grafana 系列文章 概述 前文 Grafana 系列 - Grafana Terraform Provider 基础 介绍了使用 Grafana Terraform Provider 创建 Datasource. 这几天碰到这么一个现实需求&#xff1a; 使用 Terraform 批量创建日志数据源时, 有的数据源类型是 El…

MongoDB 数据库详细介绍

MongoDB 数据库详细介绍 MongoDB&#xff08;来自“Humongous”&#xff0c;意为巨大的&#xff09;是一个开源、高性能、无模式&#xff08;NoSQL&#xff09;、文档导向的分布式数据库。它以其灵活性、可扩展性和强大的查询功能而闻名于世。MongoDB 使用 JSON 格式的文档来存…

主从同步介绍、主从同步原理、主从同步结构、构建思路、配置一主一从、配置一主多从、读写分离介绍、工作原理、配置mycat服务、添加数据源、创建集群、指定主机角

Top NSD DBA DAY07 案例1&#xff1a;MySQL一主一从案例2&#xff1a;配置一主多从结构案例3&#xff1a;数据读写分离 1 案例1&#xff1a;MySQL一主一从 1.1 问题 数据库服务器192.168.88.53配置为主数据库服务器数据库服务器192.168.88.54配置为从数据库服务器客户端192…