Python 2.7->;Python 3酸洗

Python 2.7->;Python 3酸洗,python,mongodb,pickle,Python,Mongodb,Pickle,我一直在使用Python2.7从web上刮取数据并将数据存储在MongoDB中。有些数据需要序列化(熊猫数据帧),所以我一直在python 2.7中整理文件 我现在已经用Python3编写了一些新的脚本,但是我在取消勾选数据时遇到了兼容性问题(如其他文章中所述)。由于数据直接来自Mongo,因此这些解决方案不起作用,因为它们侧重于从HD读取文件的方法 下面是一些示例代码: 在2.7中存储数据 (尝试)在python 3中取消勾选数据 我尝试使用: unpickled_data = pickle.

我一直在使用Python2.7从web上刮取数据并将数据存储在MongoDB中。有些数据需要序列化(熊猫数据帧),所以我一直在python 2.7中整理文件

我现在已经用Python3编写了一些新的脚本,但是我在取消勾选数据时遇到了兼容性问题(如其他文章中所述)。由于数据直接来自Mongo,因此这些解决方案不起作用,因为它们侧重于从HD读取文件的方法

下面是一些示例代码:

在2.7中存储数据 (尝试)在python 3中取消勾选数据 我尝试使用:

unpickled_data = pickle.loads(db_cursor["Weather"], fix_imports=True)
错误消息 TypeError:需要类似字节的对象,而不是“str”

unpickled_data = pickle.loads(db_cursor["Weather"], fix_imports=True, encoding='bytes'))
错误消息 TypeError:文件必须具有“read”和“readline”属性

unpickled_data = pickle.loads(db_cursor["Weather"], fix_imports=True, encoding='latin1'))
错误消息 TypeError:文件必须具有“read”和“readline”属性

unpickled_data = pickle.loads(db_cursor["Weather"], fix_imports=True, encoding='latin1'))
因此,我想知道是否有一种方法可以在2.7中进行pickle(并将文件存储在Mongo中),这种方法可以在Python3中轻松取消pickle


谢谢

如果我正确理解了您的问题,您可以使用python 2.7将刮取的数据存储在Mongo中,然后将数据库数据记录保存到文本文件中(在写入文本文件时请注意数据的结构,使用标准格式)。在使用python 3时,可以使用该txt文件提取数据

mongoexport--host localhost--db dbname--collection collectionname--type=csv--out name.txt--fields name、id等(写入时不带空格,用逗号分隔)


此代码将使用标准csv格式将文件保存为txt文件(txt文件能够存储大量内容)。

提示您如何处理pickle以及您正面临的问题不会有任何影响。换句话说,a.#在2.7 pickled_data=pickle.dump(scraped_data)local_city.update({'location_name':'Boston'},{$set:{“Weather”:pickled_data}})#(尝试)在python 3中取消数据pickle db_cursor=local_city.find_one({'location_name:'Boston'})取消pickle_data=pickle.loads(db_cursor[“Weather],fix_imports=True)#Error msg TypeError:需要一个类似字节的对象,而不是'str'添加的示例代码,应该更具体一些。我想在Python 2.7中腌制日期
unpickled_data = pickle.loads(db_cursor["Weather"], fix_imports=True, encoding='latin1'))