使用阀门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在TextView中对齐部分文本   带有iText和eTPKCS11的java PKCS#11签名。dll&SunPKCS11提供程序   java Intellij Idea找不到jar   java Chrome/Firefox和Jetty HTTPS   java我无法打包找不到的JavaFX应用程序模块   多线程Java:排序从异步任务检索的结果   java客户端/服务器socket不能与外部连接一起工作   java如何在单击“下一步”按钮时获取其他详细信息?   java组织。springframework。网状物客户RestTemplate应声明为@Bean,而plain@Autowired抛出错误   java如何绘制javax。摆动将ImageIcon转换为JavaFX。fxml呈现用户界面?   使用for循环的Java跟踪   java如何编码字符串以显示彩色文本(基于字符串中的前缀)   Java保存/打开文件对象   基于java复选框的搜索:使用尽可能多的“”动态生成准备好的语句作为选中复选框的计数   java为什么crawler4j随机挂起?