python 文件批量转换格式_Python批量转换任意文档格式,办公神器有木有!

在工作中,常常会遇到文档格式的转换。如果数据不多,手工转换就可以。如果是大量文档,那我们应该怎么办呢?

今天我们将解决使用Python来批量处理文档转换的问题。

关于unoconv

unoconv是一款跨平台的工具,用于格式转换,支持命令行。底层实现是依赖于开源的LibreOffice/OpenOffice。

根据unoconv的文档介绍,支持上百种文档格式的转换,已经覆盖了绝大部分的需求。

使用unoconv

安装unoconv比较繁琐,而且需要针对中文进行进一步的字符集配置。我们可以选择别人已经集成好的服务来进行操作,在这里我们选择了docker-unoconv-webservice项目。

查看项目的README,接口如下:

curl --form file=@myfile.docx http://localhost/unoconv/pdf > myfile.pdf

我们使用下列命令,先把项目的镜像pull下来

docker pull zrrrzzt/docker-unoconv-webservice

然后启动命令如下:

docker run -d -p 80:3000 zrrrzzt/docker-unoconv-webservice

服务在80端口上提供服务,如果80端口被占用,可以调整为其他的端口

确认服务正在运行:

docker ps | grep zrrrzzt/docker-unoconv-webservice

[flypython] docker ps | grep zrrrzzt/docker-unoconv-webservice

c014cf335b31 zrrrzzt/docker-unoconv-webservice "/bin/sh -c '/usr/bi…" 2 minutes ago Up 2 minutes 0.0.0.0:80->3000/tcp brave_blackburn

例子将把docx转换为pdf:

curl --form file=@demo.docx http://localhost/unoconv/pdf > demo.pdf

结果:

[flypython] curl --form file=@demo.docx http://localhost/unoconv/pdf > demo.pdf

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

100 12089 100 4242 100 7847 2532 4684 0:00:01 0:00:01 --:--:-- 7213

[flypython] ls demo*

demo.docx demo.pdf

使用Python批量请求

Python批量请求的思路是,把需要转换的文档发送到服务器,服务器会返回转换后的格式,我们接收数据,保存为文件就可以了。

def post_file(url,path):

filename = os.path.basename(path)

convert_name = str(filename).split('.')[0] + '.pdf'

m = MultipartEncoder(

fields= {

'file':(filename,open(path,'rb')),

}

)

response = requests.request('POST', url, data=m, headers={'Content-Type':m.content_type})

with open(convert_name, 'wb') as f:

f.write(response.content)

return convert_name

好了,更多类型转换,更完整的应用需要你根据业务来完善,这次的介绍就到这里了。demo的完整代码在github上,点击原文可以获取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值