Python通过解压ofd文件获取发票信息
2024-09-08 14:56:58
实际上ofd、docx、xlsx等文件就是一个压缩文件,是可以被解压处理的。所以我们把一个ofd格式的发票文件解压后就可以看到它的目录,如下:
再用谷歌或者IE打开里面的xml属性的文件,就可以看到发票相关信息,如下:
所以获取发票信息的实现方法大致就是:先解压ofd格式文件,得到里面的OFD.xml文件,在通过解析xml文件获取到发票相关信息
解析xml文件
from xml.dom.minidom import parse
def get_info(dir_path, unzip_file_path=None, removed=True):
"""
:param dir_path: 压缩文件路径
:param unzip_file_path: 解压后的文件路径
:param removed: 是否删除解压后的目录
:return: ofd_info,字典形式的发票信息
"""
file_path = unzip_file(dir_path, unzip_file_path)
io = f"{file_path}/OFD.xml"
element = parse(io).documentElement
nodes = element.getElementsByTagName('ofd:CustomDatas')
ofd_info = {}
for i in range(len(nodes)):
sun_node = nodes[i].childNodes
for j in range(len(sun_node)):
name = sun_node[j].getAttribute('Name')
value = sun_node[j].firstChild.data
ofd_info[name] =value
if removed:
shutil.rmtree(unzip_path)
return ofd_info
解压ofd文件
import shutil
import zipfile
def unzip_file(zip_path, unzip_path=None):
"""
:param zip_path: ofd格式文件路径
:param unzip_path: 解压后的文件存放目录
:return: unzip_path
"""
if not unzip_path:
unzip_path = zip_path.split('.')[0]
with zipfile.ZipFile(zip_path, 'r') as f:
for file in f.namelist():
f.extract(file, path=unzip_path)
return unzip_path
结果显示
最新文章
- 【Java EE 学习 71 下】【数据采集系统第三天】【分析答案实体】【删除问题】【删除页面】【删除调查】【清除调查】【打开/关闭调查】
- python开发目录合并小工具 PathMerge
- CentOS下通过yum安装svn及配置
- 时间的处理 --java
- mysqlbinlog 参数及用法说明
- 今天心情好,一起探讨下《送给大家的200兆SVN代码服务器》怎么管理我们的VS代码?
- 使用Sublime Text 2 编辑Markdown
- linux线程控制&;线程分离
- Device Tree(一):背景介绍
- ADO.NET学习小结【1】正在更新...
- Java 不定长度参数
- android webview load 本地文件需要注意的地方
- Python 在Windows下安装matplotlib
- JAVA - 工厂模式
- PHP面向对象简单总结
- 编写通用shell脚本启动java项目,适用于多数服务,只需修改服务名即可
- python/socket编程之粘包
- Code Signal_练习题_firstDigit
- 解决win10 关键错误开始菜单和cortana无法工作 的问题
- ubuntu 解压命令
热门文章
- mysql随机返回一条数据
- nginx重启报错 nginx: [error] open() “/run/nginx.pid“ failed (2: No such file or directory)
- 宿主机通过vmware创建的kali虚拟机连接redis,sftp等功能
- docker rabbitMQ安装
- Linux学习 --- 网络基础知识
- Python的入门学习之Day 9——from“夜曲编程”
- 00_k8s_learn
- AXI VALID READY 握手机制
- Eclipse设置背景色等
- vscode 终端中运行执行js文件