外包 | py2 下的 pickle 转成 py3 下的 pickle
外包 | py2 下的 pickle 转成 py3 下的 pickle
文章目录
- 外包 | py2 下的 pickle 转成 py3 下的 pickle
- 相关文件下载
- 任务需求
- 解决思路
相关文件下载
相关文件下载
任务需求
这个老哥不知道哪里搞来的pickle文件, 是在python2.7下保存的, 然后试了一下, 的确在python3.x下打不开, 会报编码错误.
然后到网上查了一些相关资料, 也试了一下网上的方法, 发现在 pickle.load() 这一步的确可以load出来, 比如:
# 在load()里面加加上 encoding='latin1', 或者 encoding='iso-8859-1'
with open('./factor_solve_data.pkl', 'rb') as r:pklData = pickle.load(r, encoding='latin1')
r.close()
这样的话的确可以load出来:
load()出来后可以看到里面是一个大字典, 大字典里面是一个个的 DataFrame, 我尝试一下将其中一个拎出来
结果就是一堆错误, 那应该问题就是 python 2.x 和 python 3.x 的 pickle 和 DataFrame 编码格式不同所导致的.
解决思路
那没办法了, 当时就只能想到一个最简单粗暴的了:
在 python2.x 的环境下:
- 先用 pickle 将 pkl 文件 load 出来
- 然后用 pandas 将里面的一个个 DataFrame 转成 excel 表格
然后在python3.x的环境下:
- 用 pandas 将保存下来的 excel 表格一个个读取成 DataFrame
- 然后用 pickle dump保存成新的 pkl 文件
import pandas
import pickle
import os# 这里用 python2.x 来操作 ========================
with open('./factor_solve_data.pkl', 'r') as r:pklData = pickle.load(r)
r.close()
for key, value in pklData.items(): # load()出来后是一个个字典, 用for循环将键值对读取出来value.to_excel('./xlsx/%s.xlsx'%key, encoding='utf-8') # 将值转成excel, 然后以键的名字来进行命名
# 这里用 python2.x 来操作 ========================# 这里用 python3.x 来操作 ========================
# 仿照原来的pkl文件, 将数据存进一个大字典里
pklDict = {}
for file in os.listdir('./xlsx'):# 读取excel表格, 以第一列作为索引df = pandas.read_excel(f'./xlsx/{file}', index_col=0)# 将excel文件名作为字典的键, file[:-5]是只取名字, 不要后面的 `.xlsx` 后缀pklDict[file[:-5]] = df
with open('py3Data.pkl', 'wb') as w:pickle.dump(pklDict, w)
w.close()
# 这里用 python3.x 来操作 ========================
外包 | py2 下的 pickle 转成 py3 下的 pickle相关推荐
- 关于springmvc下服务器文件打包成zip格式下载功能
关于springmvc下服务器文件打包成zip格式下载功能 2016年09月21日 11:22:14 toxic_guantou 阅读数:5731更多 个人分类: 技术点存储 版权声明:本文为博主原创 ...
- 将windows下编辑好的文件(GBK)转换成Linux下的格式(UTF8)
背景:一般我们在windows上编辑好的文件默认编码是GBK,而且换行符是^M,为了将这些文件用在linux上,我们一般会将它们转换成Linux下的文件格式,即去掉^M,且将文件格式转换成UTF8. ...
- (总结)Linux下多行合并成一行,中间加分隔符
将某个目录下的文件合并成一行,中间用冒号(:)作为分隔符 1.paste ls lib | sed 's@^@lib/@g' | paste -s -d ":" 2. tr ls ...
- Android 将drawable下的图片转换成bitmap、Drawable
将drawable下的图片转换成bitmap 1. Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.xx ...
- linux下的外接显示器设置成竖屏
linux下的外接显示器设置成竖屏 用到的软件 系统设置里的Display xrandr 用到的命令 $: xrandr -o left\right 步骤 1.在Display里选择设置的显示器为主显 ...
- 将windows下文件编码格式转换成UTF-8 文件编码格式
将windows下文件编码格式转换成UTF-8 文件编码格式 背景说明: 一个芯片厂商的SDK中的所有文件使用的GB2312的中文编码方式,所以在linux下开发的时候会发现中文的部分都是乱码. 因为 ...
- 标准分幅下的图幅号转换成经纬度坐标【原理+源代码】
最近要批量的把标准分幅下的图幅号转换成经纬度坐标,所以这两天写了个程序来搞定这件事情. 先举个例子说明一下这个程序的作用. 例如:计算出图幅号I50G021040的经纬度范围,即最大经度.最小经度.最 ...
- win10 下的输入法切换成繁体的问题解决方案
win10 下的输入法切换成繁体的问题解决方案 这几天一直很头疼,输入法莫名其妙的就切换为繁体了,而且在搜狗输入法的设置里面设置为简体也是不管用,最后终于找到了问题,由于idea的快捷键 Ctrl + ...
- EasyUI-DataGrid下数据库数字替换成文本信息显示以及不同状态显示不同颜色
EasyUI-DataGrid下数据库数字替换成文本信息显示 在使用easyui作为开发框架的时候,经常遇到一些常见的问题,比如某项数据名,在数据库里存的是0和1等,然后显示在页面上的时候,需要显示成 ...
最新文章
- php设置表单的字体,php表单标题怎么设置字体
- Git从现有仓库新建干净版本(清除版本commit记录)
- 分享Silverlight/WPF/Windows Phone一周学习导读(11月6日-11月12日)
- pythonjam怎么使用_jam怎么用啊多多举例子啊各种词意的用法
- MySQL连接问题 --- (1251:Client does not support ...)
- 问题解决:wireshark之npcap无法安装、winpcap无法安装问题解决
- 软考软件设计师下午真题-面向对象的程序设计与实现-组合设计模式(2011年上半年试题六))Java代码讲解
- 计算机基础与office应用教程,计算机基础与Office 2010实用教程
- 电子签名具备法律效力吗?这些知识点你需要了解
- 计算机教育中缺失的一课 - MIT - L5 - 命令行环境
- php qq昵称,自写与收集的一些免费的API接口(获取QQ昵称、头像、QQ秀等等...)...
- HTML学生个人网站作业设计:电影网站设计——电影购票项目(9页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
- 连接数据库出现java.lang.NullPointerException
- cad批量打印快捷键_原来CAD还能这么打印?批量打印了解一下?1分钟打印100张...
- 列表、元组、字典、集合
- php laravel入口文件,Laravel 应用的入口:路由系列之基础入门篇
- 机械行业ERP系统生产订单管理 分享式操作轻松协同
- java 音频转码_javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)...
- 想学CG原画?112G零基础到大神游戏场景、原画教程免费领取
- 三次握手(Three-way Handshake)和四次挥手
热门文章
- 【QT】Windows下QT下载安装
- Matlab中FFT运算加窗函数的验证
- [C++]打开新世界的大门之C++入门
- 28行python代码实现哈工大一键申请出校41天
- 什么是融资?怎么才能融资?如何实现个人融资?
- 互联网产品经理(PM)的工作内容和职责
- UML类图的辅助构建的逻辑代码
- 解决IE11审查元素面板空白问题
- idea下设置git忽略提交ignore
- 在vivado中GTP GTH GTZ使用GTGREFCLK时 Vivado_DRC: (REQP-52) 或Vivado_DRC: (REQP-49)错误解决办法