在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 subprocess

for 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 subprocess

for 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. 进行批量转化前一定要进行备份,因为这个过程是不可逆转的。

你可能感兴趣的:(基础操作,python,python小项目,macos,策略模式)