Python中的保存/加载功能

Posted

技术标签:

【中文标题】Python中的保存/加载功能【英文标题】:Save/load function in Python 【发布时间】:2015-10-19 07:40:09 【问题描述】:

我必须创建一个保存函数和一个加载函数,以以下格式保存字典:

123;Kalle;
123;Maria;
321;Anna;
321;Olle;

我的字典应该看起来像一个电话簿,键是名字,值是电话号码:

telebook = "jacob":"8472923777", "nisse":"092563243"

如何编写一个函数以上述格式保存我的电话簿?它应该是这样的:

8472923777;jacob;

这是我当前的代码:

def save(lista, telebook): 
import pickle 
filename = lista[1] 
f = open(filename, "w") 
pickle.dump(telebook, f) 
f.close() 
print telebook 


def load(lista, telebook): 
import pickle 
try: 
    filename = lista[1] 
    f = open(filename, "r") 
    telebook_1 = pickle.load( f ) 
    telebook.clear() 
    telebook.update(telebook_1) 
    f.close() 
    print telebook 
except:
    print "This file doesn't exist" 

编辑:

我的保存功能比我想象的要容易,我自己设法解决了。不知道如何让加载功能工作。

book = raw_input("telebook> ").lower()
lista = book.split() 

def save(lista, telebook): 
   filename = lista[1] 
   f = open(filename, "w") 
   for name, num in telebook.items():
       f.write(num+";"+name+";"+"\n")
   f.close() 
   print telebook 

我的负载和以前一样,但显然我不能再使用那个了。

【问题讨论】:

这不是代码编写服务。展示您的尝试并告诉我们您遇到的问题 我们不会为您编写代码......我们会帮助您编写“您的代码” 抱歉,将使用当前代码进行编辑。 你为什么使用pickle?有什么特别的原因吗? 您考虑过与your classmate 交谈吗? 【参考方案1】:
def save(telebok, filepath):
    with open(filepath, 'w') as outfile:
        for name,num in telebok.items():
            outfile.write(";;\n".format(num, name))

然后把它拿回来:

import csv
def load(filepath):
    with open(filepath) as infile:
        telebok = dict((v,k) for v,k,_ in csv.reader(infile, delimiter=';'))
    return telebok

【讨论】:

感谢您的帮助,尽管我使用了您为其他人提供的帮助进行类似练习,但没有导入 csv。

以上是关于Python中的保存/加载功能的主要内容,如果未能解决你的问题,请参考以下文章

为 Winform 创建保存和加载功能 [关闭]

Python/Theano 加载和保存模型

使用 python 3.6 将多个文件并行加载到内存中的最佳方法是啥?

无需借助 csv 文件即可保存和加载复杂的 python 字典

Python中的模块导入无法加载Pytorch nn.Module的派生类

使用 Python 和 dotenv 更改保存在 .env 文件中的环境变量