使用阀门VDF文本格式的库

vdf的Python项目详细描述


Latest version released on PyPiMIT LicenseTest coverageScrutinizer scoreBuild status of master branch

纯python模块,用于对vdf进行(反)序列化,其工作原理与json类似。

测试并在python2.7python3.3+pypypypy3上工作。

VDF是阀门的键值文本文件格式

https://developer.valvesoftware.com/wiki/KeyValues

支持的版本:kv1
不受支持:kv2kv3

安装

您可以从https://pypi.org/project/vdf/或通过pip

pip install vdf

github

安装当前开发版本
pip install git+https://github.com/ValvePython/vdf

问题和解决方案

  • 存在包含重复密钥的已知文件。这是支持的格式和 无法映射到dict。对于这种情况,模块提供vdf.VDFDict 可以用作映射器而不是dict。有关详细信息,请参见示例部分。
  • 默认情况下,反序列化将返回一个dict,它既不保留也不保证 由于hash randomization而产生的密钥顺序。如果关键顺序很重要 我建议使用collections.OrderedDict,或vdf.VDFDict

示例用法

对于文本表示法

importvdf# parsing vdf from file or stringd=vdf.load(open('file.txt'))d=vdf.loads(vdf_text)d=vdf.parse(open('file.txt'))d=vdf.parse(vdf_text)# dumping dict as vdf to stringvdf_text=vdf.dumps(d)indented_vdf=vdf.dumps(d,pretty=True)# dumping dict as vdf to filevdf.dump(d,open('file2.txt','w'),pretty=True)

对于二进制表示

d=vdf.binary_loads(vdf_bytes)b=vdf.binary_dumps(d)# alternative format - VBKVd=vdf.binary_loads(vdf_bytes,alt_format=True)b=vdf.binary_dumps(d,alt_format=True)# VBKV with header and CRC checkingd=vdf.vbkv_loads(vbkv_bytes)b=vdf.vbkv_dumps(d)

使用替代映射器

d=vdf.loads(vdf_string,mapper=collections.OrderedDict)d=vdf.loads(vdf_string,mapper=vdf.VDFDict)

VDFDict的工作方式与常规的dict很相似,只是它处理重复项并记住 插入顺序。此外,键只能是str类型。最重要的区别 当试图分配一个已经存在的密钥时,它将创建一个副本而不是 将值重新分配到现有的键。

>>>d=vdf.VDFDict()>>>d['key']=111>>>d['key']=222>>>dVDFDict([('key',111),('key',222)])>>>d.items()[('key',111),('key',222)]>>>d['key']111>>>d[(0,'key')]# get the first duplicate111>>>d[(1,'key')]# get the second duplicate222>>>d.get_all_for('key')[111,222]>>>d[(1,'key')]=123# reassign specific duplicate>>>d.get_all_for('key')[111,123]>>>d['key']=333>>>d.get_all_for('key')[111,123,333]>>>deld[(1,'key')]>>>d.get_all_for('key')[111,333]>>>d[(1,'key')]333>>>printvdf.dumps(d)"key""111""key""333">>>d.has_duplicates()True>>>d.remove_all_for('key')>>>len(d)0>>>d.has_duplicates()False

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

推荐PyPI第三方库


热门话题
java GridBagLayout不填充区域   java Memozied Fibonacci未运行与常规Fibonacci解决方案   Java Web启动未启动问题   Java中异常和if-then的区别   java从命令提示符运行批处理文件获取错误   socket在Java中验证SSL证书的公共名称   如何在JAVA中检查字符串数组中的相等字   用java语言将音频文件转换成文本文件的语音识别   java为什么foo(1,2,3)没有传递给varargs方法foo(对象…)作为整数[]   java通过蓝牙将奇怪的数据从Arduino传输到Android   java ContainerRequestFilter获取空entitystream   java如何从安卓 studio中删除不兼容类型错误   基本Java错误   在Spring引导中使用REST API时发生java错误   javascript通过从SQL查询派生的URL打开页面