对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计算三维椭圆轨道上的点   java在JXDatePicker中禁用未来日期   尝试从数据库检索密码值时出现java错误   文本区域中的swing格式。JAVA   ColdFusion 10中的java BouncyCastle库   java HBase mapreduce部分未运行   java为什么公共类需要导入到包中而不是自己的包中?   java如何使用Gson为多个JSON对象编写TypeAdapter?   函数式编程Java 8添加元素的方法   java部署TextFairy,但在构建渐变时看到错误   java FindBugs EI_EXPOSE_REP bug是否只关注日期?   http Java URLConnection:如何确定web文件的大小?   jndi从LDAP条目(名称相同)中获取所有值,并将它们存储在带有Java的Lotus Notes中   筛选结果为HBase时的java OutofOrdersCannerExtenception   java Apache POI SXSSFSheet。getRow()返回null假阳性   关于星型模式的java   在Java中生成链表时出现异常