kv文件读写 in Python & C++

文件格式均为kv对,即keylength, key, valuelen, value. 如何对其进行读写操作,本文列出demo code。感谢涛哥贡献部分代码,这里分享,方便大家使用。

Python:

def readimg():
	fr = open(‘IMG_2963.JPG‘,‘r‘)
	keylen = struct.unpack(‘i‘,fr.read(4))[0]
	key = fr.read(keylen)
	valuelen = struct.unpack(‘i‘,fr.read(4))[0]
	value = fr.read(valuelen)
	fr.close()

def writeimg():
	fw = open(‘Img_to_Write‘,‘w‘)
	key = ‘key‘
	fw.write(struct.pack(‘i‘,len(key)))
	fw.write(key)
	fw.write(struct.pack(‘i‘,len(val)))
	fw.write(val)
	fw.close()

C++:

inline bool readkv(istream &ifs,string &key,string &value)
{
	int keylen;
	ifs.read((char*)&keylen,4);
	if (!ifs)
	{
		return false;
	}
	key.resize(keylen);
	ifs.read((char*)key.c_str(),keylen);
	int valuelen;
	ifs.read((char*)&valuelen,4);
	value.resize(valuelen);
	ifs.read((char*)value.c_str(),valuelen);
	return true;
}

inline void writekv(ostream &ofs,const string & key,const string & value)
{
	unsigned int klen = key.size();
	unsigned int vlen = value.size();
	ofs.write((const char*)&klen,4);
	ofs.write(key.c_str(),klen);
	ofs.write((const char*)&vlen,4);
	ofs.write(value.c_str(),vlen);
	ofs.flush();
}

如果value是一张图片的data,调用的时候可以用opencv的imdecode直接进行转换,生成cv::Mat类型的图片

cv::Mat buf(1,value.size(),CV_8U,(void *)value.c_str());
cv::Mat srcmat = cv::imdecode(buf,1);
时间: 2024-08-29 22:15:46

kv文件读写 in Python & C++的相关文章

Python——函数,模块,简单文件读写(python programming)

函数(function)定义原则: 最大化代码重用,最小化代码冗余,流程符合思维逻辑,少用递归; 函数的定义方法: def function_name(param_1, param_2): ..... return output  #输出,结束函数 注意: 函数要在使用之前定义函数的使用方法以print()函数为例形式参数和实际参数在函数内定义的变量为本地变量,在函数外无法访问 参数传递: 实际参数通过赋值运算传递给形式参数注意:如果参数是列表,在函数内可以被修改 (列表可以原位传递) 1 de

Python模块、字符编码、文件读写

模块 当我们用一种语言开始真正的软件开发室,除了编写代码外,还需要很多基本的已经写好的现成的东西,高级语言通常都会为我们提供了一个比较完善的基础代码库,让我们能直接调用,python也不例外,为我们提供了分成完善的基础代码和第三方库.在python中一个.py文件就是一个模块. 模块导入使用import 获取随机数模块 调用系统命令 把执行脚本时传递的参数获取到了 当我们试图加载一个模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错,默认情况下,Python解释器会搜

Python 基础 - Json文件读写

JSON介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C.C++.Java.JavaScript.Perl.Python等).这些特性使JSON成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率). 在python中,JSON 由列表和字典组成. 序列化的两个模块中,json模块是用于

快速入门Python中文件读写IO是如何来操作外部数据的?

读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件). 读文件 要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符 >>> f =

Python IO编程——文件读写

1.1   文件读写 1.1.1   读文件 >>> f = open('/root/python/hello.py','r')    #标识符r表示读 >>> f =open('/root/python/hello1.py', 'r')   #文件不存在报错 Traceback (most recent call last): File "<stdin>", line 1, in <module> FileNotFoundE

转载-Python学习笔记之文件读写

Python 文件读写 Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件读写,也需要注意编码问题:其他文件的读写及编码相关详见专题的博文. open()   close()     with open(...) as ... 看以下示例就能了解 Python 的 open() 及 close() 函数.这边调用 read()方法可以一次读取文件的全部内容,Python把

【原创】python中文编码问题深入分析(三):python2.7文件读写中文编码问题

上一篇文章介绍和分析了python2.7中使用print遇到的中文编码问题的原因和解决方案,本篇主要介绍一下python2.7中执行文件读写可能遇到的编码问题. 1.文件读取 假如我们读取一个文件,文件保存时,使用的编码格式,决定了我们从文件读取的内容的编码格式,例如,新建一个文本文件test.txt, 编辑内容,保存的时候注意,编码格式设定为gb2312,那么使用python读取文件内容,方式如下: f = open('test.txt','r') s = f.read() #读取文件内容,如

python基础之文件读写

python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目录名,返回的是一个列表:os.listdir("指定路径") 函数用来删除一个文件:os.remove("文件路径") 删除多个目录:os.removedirs(&

python文件读写小结

读文件 打开一个文件用open()方法(open()返回一个文件对象,它是可迭代的): >>> f = open('test.txt', 'r') r表示是文本文件,rb是二进制文件.(这个mode参数默认值就是r) 如果文件不存在,open()函数就会抛出一个IOError的错误,并且给出错误码和详细的信息告诉你文件不存在: >>> f=open('test.txt', 'r') Traceback (most recent call last): File &quo