一、引言
Python中批量进行办公文档转化是常见的操作,在windows状态下我们可以利用changeOffice这个模块很快进行批量操作。
二、在Windows环境下的解决文案
Windows环境下,如何把doc转化为docx,xls转化为xlsx?
首先,我们要安装这个第三方模块,在cmd下输入
pip install changeOffice
其次,导入这个模块
from changeOffice import change
然后,要确定文件所在的位置
c = change(".") #如果是"."则表示当前位置
最后就可以进行展示转化了,这里为了简便我们把代码写在一起形成py文件
from changeOffice import changepath = "." #这里输入文件所在的咱径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 osimport 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 osimport 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!')
四、学后反思
- 源码中我增加了一个os.remove(file_path),就是转化完会把原来的源文件进行删除,只保留转化后的文件。
- 进行批量转化前一定要进行备份,因为这个过程是不可逆转的。
来源地址:https://blog.csdn.net/henanlion/article/details/132285407