在Python中将字典保存到文件中(pickle的替代方法)?

12 浏览
0 Comments

在Python中将字典保存到文件中(pickle的替代方法)?

我最终还是选择了pickle。

好的,根据我在另一个问题中得到的建议,我被告知使用pickle将字典保存到文件中。

我尝试保存到文件的字典是:

members = {'Starspy' : 'SHSN4N', 'Test' : 'Test1'}

当pickle将其保存到文件时,格式如下:

(dp0

S'Test'

p1

S'Test1'

p2

sS'Test2'

p3

S'Test2'

p4

sS'Starspy'

p5

S'SHSN4N'

p6

s.

请问您能否提供另一种将字符串保存到文件的方式吗?

这是我希望保存的格式:

members = {'Starspy' : 'SHSN4N', 'Test' : 'Test1'}

完整的代码:

import sys

import shutil

import os

import pickle

tmp = os.path.isfile("members-tmp.pkl")

if tmp == True:

os.remove("members-tmp.pkl")

shutil.copyfile("members.pkl", "members-tmp.pkl")

pkl_file = open('members-tmp.pkl', 'rb')

members = pickle.load(pkl_file)

pkl_file.close()

def show_menu():

os.system("clear")

print "\n","*" * 12, "MENU", "*" * 12

print "1. List members"

print "2. Add member"

print "3. Delete member"

print "99. Save"

print "0. Abort"

print "*" * 28, "\n"

return input("Please make a selection: ")

def show_members(members):

os.system("clear")

print "\nNames", " ", "Code"

for keys in members.keys():

print keys, " - ", members[keys]

def add_member(members):

os.system("clear")

name = raw_input("Please enter name: ")

code = raw_input("Please enter code: ")

members[name] = code

output = open('members-tmp.pkl', 'wb')

pickle.dump(members, output)

output.close()

return members

running = 1

while running:

selection = show_menu()

if selection == 1:

show_members(members)

print "\n> " ,raw_input("Press enter to continue")

elif selection == 2:

members == add_member(members)

print members

print "\n> " ,raw_input("Press enter to continue")

elif selection == 99:

os.system("clear")

shutil.copyfile("members-tmp.pkl", "members.pkl")

print "Save Completed"

print "\n> " ,raw_input("Press enter to continue")

elif selection == 0:

os.remove("members-tmp.pkl")

sys.exit("Program Aborted")

else:

os.system("clear")

print "That is not a valid option!"

print "\n> " ,raw_input("Press enter to continue")

0