Python Pickle不存储数据

Python Pickle不存储数据,python,dictionary,pickle,Python,Dictionary,Pickle,我有一本字典,里面有{Name:Email Address} 我有一个单独的.py来腌制这个: emailDict = {'Kilizo': 'info%40kilizo.com' , 'about': 'about%40google.com' } # write python dict to a file output = open('orig.pkl', 'wb') pickle.dump(emailDict, output) output.close() 这是可行的,因为它将原始字

我有一本字典,里面有{Name:Email Address}

我有一个单独的.py来腌制这个:

emailDict = {'Kilizo': 'info%40kilizo.com' , 'about': 'about%40google.com' }


# write python dict to a file

output = open('orig.pkl', 'wb')
pickle.dump(emailDict, output)
output.close()
这是可行的,因为它将原始字典pickle到orig.pkl

然后在我的主要网站上,我有:

# Pickling # Deleting Old Temp & Creating New One
tmp = os.path.isfile("tmp.pkl")
if tmp == True:
        os.remove("tmp.pkl")
shutil.copyfile("orig.pkl", "tmp.pkl")

# Pickling # Loading File
pkl_file = open('tmp.pkl', 'rb')
emailDict = pickle.load(pkl_file)
pkl_file.close()
然后,我在一个网站上有两个表单输入,其中包含电子邮件地址和相应的名称

#Processing input
emailAdded = fs.getvalue('emailAdd')
nameAdded = fs.getvalue('nameAdd')
if  emailAdded != None or nameAdded != None:
    print emailAdded
    print nameAdded 
    emailDict[nameAdded] = emailAdded
else:
    print "Please enter a name & email address" 
output = open('tmp.pkl', 'wb')
pickle.dump(emailDict, output)
output.close()
print emailDict
但是,没有新数据存储到tmp.pkl或orig.pkl

有什么办法让我开始吗

谢谢

有什么办法让我开始吗

使用pickle作为网站的动态更新数据存储不是很好。为了避免并发性问题,您必须实现一个锁文件机制,并希望访问该文件的所有其他东西都会尊重它

我强烈建议您使用支持并发访问的数据存储。例如,一个数据库

阅读:


您可以从sqlite轻松开始。见:
MattH是对的,您绝对不应该使用pickle作为数据库的替代品。我建议使用类似的方法,因为这样可以轻松地存储字典。我发现它非常易于使用,而且可以轻松地使用字典。

python shelve模块可以为您提供类似字典的对象,但也可以在您要求时将对象pickle并存储到文件中。正如其他人所说,如果要经常更新,您需要使用某种类型的数据库,但为了便于使用,很难击败搁置模块


这对我很有用。但是我又做了两行:NexDist= KIPLE。Load(PKLYFILE)打印NeXDITI缺少一个最终的版本:SUTULL .CopyFrase[(tMP.PKL),“Org.pkl”)您的并发访问权限,但是,我需要考虑实现这一点,谢谢。出于好奇,为什么不使用某种现有的数据库系统?一个值得尊敬的数据数据库系统,如mongo或sqlite,将已经准备好一切。无需处理诸如文件锁定/移动之类的混乱部分。感谢您提供维基百科页面的链接。我从未见过它,它的信息量很大。