如何使用pickle python将包含列表的对象列表保存为文件成员?

哈尼·格克(Hani Goc)

我有以下课程:

class Document:
  _queryID  = ""
  _name = []
  _docId = ""

在代码中,我创建了一个名为listDocuments的列表。我用文档类型的对象填充列表。

import pickle 
if __name__ == "__main__": 
   listDocuments = []
   for i in range(0,10):
      e = Document()
      e._queryID = str(i)
      e._docId   = str(i+1)
      e._name.append("h"+str(i))
      listDocuments.append(e)
   save_data(listDocuments, "Variations.dat")
   list = load_data("Variations.dat")

   for obj  in listEntities:
     print obj._queryID  + "==>"+ obj._docId
     for var in obj._name:
       print var +"  "
     print "----\n"

我使用了以下来自Python的函数:如何在文件中保存带有对象的列表

#save list of variations
def save_data(data, path):
    with open(path, "wb") as f:
        pickle.dump(data, f)

#load list of variations (Correctd after comments thank you)
def load_data(var_file):
    try:
        with open(var_file) as f:
            listDocument = pickle.load(f)
    except:
        listDocument = []

    return listDocument

  • 作为输出,我只能打印_queryID。我想念什么?我无法打印列表_name或_docID
杰德沃兹

好的,有几个问题。

第一的:

def load_data(var_file):
    try:
        with open(var_file) as f:
            listDocument = pickle.load(f)
    except:
        listDocuments = []

    return listDocuments

您同时使用listDocumentlistDocuments(注意一个在结尾s)。同样,您listDocuments在外部程序中使用这些变量来隐藏错误。让我们将函数内部的变量重命名datasave_data函数一样。我们也将重新命名var_file,以path对同一一致性的原因。

考虑:

def load_data(path):
    data = []
    try:
        with open(path) as f:
            data = pickle.load(f)
    except: pass

    return data

接下来,您要使用的list是保留的内置-将其更改为lst现在,您有了:

class Document:
    _queryID  = ""
    _name = []
    _docId = ""

def save_data(data, path):
    with open(path, "wb") as f:
        pickle.dump(data, f)

#load list of variations
def load_data(path):
    data = []
    try:
        with open(path) as f:
            data = pickle.load(f)
    except: pass

    return data

import pickle
if __name__ == "__main__":
    listDocuments = []
    for i in range(0,10):
        e = Document()
        e._queryID = str(i)
        e._docId   = str(i+1)
        e._name.append("h"+str(i))
        listDocuments.append(e)
    save_data(listDocuments, "Variations.dat")
    lst = load_data("Variations.dat")

    for elem in lst:
        print elem._queryID
        print elem._docId
        print elem._name
        print "---"

哪个可行,并打印:

0
1
['h0', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'h7', 'h8', 'h9']
---
1
2
['h0', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'h7', 'h8', 'h9']
---
2
3
['h0', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'h7', 'h8', 'h9']
---
3
4
['h0', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'h7', 'h8', 'h9']
---
4
5
['h0', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'h7', 'h8', 'h9']
---
5
6
['h0', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'h7', 'h8', 'h9']
---
6
7
['h0', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'h7', 'h8', 'h9']
---
7
8
['h0', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'h7', 'h8', 'h9']
---
8
9
['h0', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'h7', 'h8', 'h9']
---
9
10
['h0', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'h7', 'h8', 'h9']
---

编辑

根据您的编辑,您没有任何listEntities变量-我认为您的意思是(最近重命名的)lst

for obj in lst:
    print obj._queryID  + "==>"+ obj._docId
    for var in obj._name:
        print var +"  "
    print "----\n"

最后,如果您想知道为什么_name变量对于Document该类的所有实例都是相同的,那是因为您是在声明_name为类属性(因此对于所有实例都相同),而不是实例属性。

您可以将Document类定义替换为

class Document:
    def __init__(self):
        self._name = []

而且您可能会更满意以下结果:

0==>1
h0  
----

1==>2
h1  
----

2==>3
h2  
----

3==>4
h3  
----

4==>5
h4  
----

5==>6
h5  
----

6==>7
h6  
----

7==>8
h7  
----

8==>9
h8  
----

9==>10
h9  
----

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将列表框中的文件保存为.txt文件?

来自分类Dev

如何将单词列表和这些单词在句子中的位置保存为文件

来自分类Dev

如何将JavaScript数组保存为Redis列表

来自分类Dev

使用pyodbc将sql表的列名保存为列表

来自分类Dev

如何将列表框项保存为 .config 文件并将其读回列表框?

来自分类Dev

如何将保存为 RData 的 R 中的字符向量导入到 python 列表中?

来自分类Dev

使用pickle保存列表

来自分类Dev

如何将包含TPngImage的TImage保存为位图文件?

来自分类Dev

如何在JMeter中将响应中的xml列表保存为csv文件

来自分类Dev

如何将DataFrame保存为列表而不是字符串

来自分类Dev

如何将 Cantata 中的当前播放列表保存为 mu3?

来自分类Dev

无论如何将多个按钮保存为列表?

来自分类Dev

使用python替换列表中的字符串并将其保存为其他变量

来自分类Dev

如何将JSON对象保存为单独的类型?

来自分类Dev

如何使用 Python 删除存储在 Pickle 文件中的对象

来自分类Dev

如何在Python 3.4中将JSON中的推文保存为txt文件?

来自分类Dev

如何将.xlsx数据保存为Blob文件

来自分类Dev

如何将CSV文件保存为变量

来自分类Dev

如何将外壳屏幕保存为冗长的文件?

来自分类Dev

使用python将某些网站的HTML保存为txt文件

来自分类Dev

使用python将某些网站的HTML保存为txt文件

来自分类Dev

使用matplotlib将图保存为pdf文件

来自分类Dev

使用matplotlib将图保存为pdf文件

来自分类Dev

如何保存字典Python编辑:可以使用pickle

来自分类Dev

Python:如何使用pickle来转储Queue对象?

来自分类Dev

是否可以将下载的游戏对象(使用资产包)保存为预制而不是 Unity3d 文件?

来自分类Dev

如何使用pickle从MDAnalysis模块转储Universe对象?

来自分类Dev

如何将mathematica文件的输出保存为其他格式,然后在以后使用?

来自分类Dev

如何使用PHPExcel将xlsx文件上的可打印区域保存为PDF

Related 相关文章

  1. 1

    如何将列表框中的文件保存为.txt文件?

  2. 2

    如何将单词列表和这些单词在句子中的位置保存为文件

  3. 3

    如何将JavaScript数组保存为Redis列表

  4. 4

    使用pyodbc将sql表的列名保存为列表

  5. 5

    如何将列表框项保存为 .config 文件并将其读回列表框?

  6. 6

    如何将保存为 RData 的 R 中的字符向量导入到 python 列表中?

  7. 7

    使用pickle保存列表

  8. 8

    如何将包含TPngImage的TImage保存为位图文件?

  9. 9

    如何在JMeter中将响应中的xml列表保存为csv文件

  10. 10

    如何将DataFrame保存为列表而不是字符串

  11. 11

    如何将 Cantata 中的当前播放列表保存为 mu3?

  12. 12

    无论如何将多个按钮保存为列表?

  13. 13

    使用python替换列表中的字符串并将其保存为其他变量

  14. 14

    如何将JSON对象保存为单独的类型?

  15. 15

    如何使用 Python 删除存储在 Pickle 文件中的对象

  16. 16

    如何在Python 3.4中将JSON中的推文保存为txt文件?

  17. 17

    如何将.xlsx数据保存为Blob文件

  18. 18

    如何将CSV文件保存为变量

  19. 19

    如何将外壳屏幕保存为冗长的文件?

  20. 20

    使用python将某些网站的HTML保存为txt文件

  21. 21

    使用python将某些网站的HTML保存为txt文件

  22. 22

    使用matplotlib将图保存为pdf文件

  23. 23

    使用matplotlib将图保存为pdf文件

  24. 24

    如何保存字典Python编辑:可以使用pickle

  25. 25

    Python:如何使用pickle来转储Queue对象?

  26. 26

    是否可以将下载的游戏对象(使用资产包)保存为预制而不是 Unity3d 文件?

  27. 27

    如何使用pickle从MDAnalysis模块转储Universe对象?

  28. 28

    如何将mathematica文件的输出保存为其他格式,然后在以后使用?

  29. 29

    如何使用PHPExcel将xlsx文件上的可打印区域保存为PDF

热门标签

归档