系列1中讲解了路径管理方法,那本文讲讲序列化操作,为啥要使用这个呢?简单就是为了保存我们代码中产生的各种对象,下次修改程序的时候前面完成的正确操作就不用重复计算了,可以直接读取保存的对象,也就是所谓的高大上名称“持久化”。好了,废话不多说,开始!
- 问题:我们要讲我们计算得到的各种对象保存起来,假设存在measure_dict_file中,可以这样操作:measure_dict_file=os.path.join(paper_dir,‘measure_dict.p’),里面的paper_dir就是我们要保存measure_dict.p文件的地址,好像说明白了吧?
- measure_dict_file中就存放了我们保存对象的文件完整路径,那我们下次操作的时候,可以通过os.path.isfile(measure_dict_file)判断,如果这个文件存在,我们就可以直接使用:measure_dict=pickle.load(open(measure_dict_file,‘rb’))方式读取保存的所有对象,pickle模块专干这事的,记得导入哈!当然,你如果不想这样弄,你可以删除那个文件,重新计算measure_dict,也就是赋值为空,继续计算了,你随意!
- 这里,我们假设还没开始计算measure_dict,那方便,在第2步判断的时候,上面那个文件你删除了,不存在的条件下:measure_dict={},哈哈,好了,你就要重新计算这个东东了!开始
- 这里还有个好玩的路径管理方式,因为上面的东西没计算,好,我们要整理下我们计算这些需要的路径了,比如很多,那可以采用这种代码方式管理下:for d in […_dir, …_dir]: if not os.path.isdir(d): os.makedirs(d) 通过这种方式可以查看你设置的那些路径有没有,没有的话,采用os.makedirs(d)的方式直接创建相应的路径,所以说这是系列2,和前面的是完整的一套。
- 接下来,你可以设计个函数读取相应的数据,计算结果,并赋值给measure_dict了,这个过程就省略吧,毕竟不通用。
- 这里管理路径或者读取变量数据等时候,可能使用到分割字符串方法,简单介绍两种split这个简单,还有个rsplit, 语法:S.rsplit([sep=None][,count=S.count(sep)]), sep – 可选参数,指定的分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。count – 可选参数,分割次数,默认为分隔符在字符串中出现的总次数。OK,涉及到啥就要弄个明白,学的才有意思,要注意两者区别,rsplit是从右向左分割
- 总结下,这里用到了load,dump还没用呢?下次写吧