对Java的METAINF进行编码/解码/清单.MF在Python中

java-manifest的Python项目详细描述


java清单py

Build StatusPyPI version

在Python中对Java的META-INF/MANIFEST.MF进行编码/解码。在

安装

要在PyPI上安装最新版本,请运行:

$ pip install java-manifest

使用

清单由字典列表表示,其中每个字典 对应于清单中以空行分隔的部分,并且 字典有str键和str或{}值。在

java_manifest.loads接受包含清单格式数据的字符串,并且 返回字典的列表,其中每个字典都是 显示。java_manifest.load使用任何typing.TextIO执行相同的操作 可读对象。在

^{pr2}$

类似地,java_manifest.dumps返回清单格式的数据字符串 从字典列表中,其中每个字典都是 显示。java_manifest.dump执行相同的操作,写入任何typing.TextIO 可写对象。在

>>>importjava_manifest>>>manifest=[...{..."Name":"README-Example",..."Some-Str":"Some random string",...},...]>>>manifest_str=java_manifest.dumps(manifest)>>>print(manifest_str)Name:README-ExampleSome-Str:Somerandomstring<BLANKLINE>

还有一个from_jar函数可以找到META-INF/MANIFEST.MF文件 在jar中,java_manifest.load就是这样。在

>>>importjava_manifest>>>manifest=java_manifest.from_jar("test_files/simple.jar")

自定义编码器/解码器

因为Java的manifest文件格式不处理 一节,具体使用该格式创建特殊的编码/解码规则 它可以将一些结构化数据转换为基本字符串,以便对其进行编码 变成一个清单,反之亦然。的encoderdecoder参数 倾倒和装载分别负责处理。编码器 和解码器都接受一个键值对。但是,编码器接收 潜在的结构化数据作为值,并返回纯字符串,而 解码接收字符串值并返回潜在的结构化数据。在

正如我们已经看到的,默认的编码器和解码器没有转换 并防止您尝试转储非字符串数据。在

>>>importjava_manifest>>>print(java_manifest.dumps([{"foo":"bar"}]))foo:bar>>>print(java_manifest.dumps([{"int":1}]))Traceback(mostrecentcalllast):...ValueError:key'int'hastype<class'int'> value, expected str

但是,您可以描述更多的自定义编码器,以支持 串。在

>>>defencode(key,val):...ifisinstance(val,list):...return",".join(val)...returnval>>>print(java_manifest.dumps([{"foo":"bar","names":["alice","bob","charlie"]}],encoder=encode))foo:barnames:alice,bob,charlie<BLANKLINE>

类似于自定义解码器。在

>>>importjava_manifest>>>defdecode(key,val):...# In reality you'd probably want to target only specific keys, to avoid...# messing up random strings containing commas. This is just an example....vals=val.split(",")...iflen(vals)==1:...returnval...else:...returnvals>>>manifest=java_manifest.loads("foo: bar\r\nnames: alice,bob,charlie",decoder=decode)>>>print(manifest)[{'foo':'bar','names':['alice','bob','charlie']}]

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用bouncycastle从pkcs7文件获取证书?   java是向字符串数字添加零的有效方法吗?   Android在外部播放器中播放视频url   如何在Java代码中调用Wildfly事务管理器?   java为什么在使用键盘完成选择时不触发选择事件?   java xpath错误:jaxb外部绑定文件上为null   java如何避免在活动之间切换时出现白屏   Hadoop安装程序中的java“unknown.prolexic.com:未知错误”   要用作out参数的java自定义数字类   java如何向spring控制器的http请求添加属性?   for循环中的java静态值   java为图像编辑器快速、可靠地保存/加载文档状态   java数组越界和空指针异常   java如何在列表<Object>对象包含对象的对象上检查null?   java从URL下载文件到tomcat服务器   GlassFish“ogs3.1.2.2windows.exe”和“ogs3.1.2.2windowsml.exe”文件之间的java差异   无MathLab的Java Gabor图像处理   包含CSV中不存在的其他字段的java mongoimport