Xue*_*ang 114 python dictionary file python-3.x
我有更改dict值并将dict保存到文本文件(格式必须相同)的问题,我只想更改member_phone
字段.
我的文本文件格式如下:
memberID:member_name:member_email:member_phone
Run Code Online (Sandbox Code Playgroud)
我将文本文件拆分为:
mdict={}
for line in file:
x=line.split(':')
a=x[0]
b=x[1]
c=x[2]
d=x[3]
e=b+':'+c+':'+d
mdict[a]=e
Run Code Online (Sandbox Code Playgroud)
当我尝试更改member_phone
存储的时d
,值已经改变而不是按键流动,
def change(mdict,b,c,d,e):
a=input('ID')
if a in mdict:
d= str(input('phone'))
mdict[a]=b+':'+c+':'+d
else:
print('not')
Run Code Online (Sandbox Code Playgroud)
以及如何将dict保存为具有相同格式的文本文件?
Zah*_*Zah 222
Python有pickle模块只是为了这种事情.
这些功能是保存和加载几乎任何对象所需的全部功能:
def save_obj(obj, name ):
with open('obj/'+ name + '.pkl', 'wb') as f:
pickle.dump(obj, f, pickle.HIGHEST_PROTOCOL)
def load_obj(name ):
with open('obj/' + name + '.pkl', 'rb') as f:
return pickle.load(f)
Run Code Online (Sandbox Code Playgroud)
这些函数假定obj
您当前工作目录中有一个文件夹,该文件夹将用于存储对象.
请注意,pickle.HIGHEST_PROTOCOL是一种二进制格式,它不总是方便,但有利于提高性能.协议0是文本格式.
为了保存Python的集合,有一个shelve模块.
Fra*_*urt 146
Pickle可能是最好的选择,但是如果有人想知道如何使用NumPy保存和加载字典到文件:
import numpy as np
# Save
dictionary = {'hello':'world'}
np.save('my_file.npy', dictionary)
# Load
read_dictionary = np.load('my_file.npy',allow_pickle='TRUE').item()
print(read_dictionary['hello']) # displays "world"
Run Code Online (Sandbox Code Playgroud)
仅供参考:NPY文件查看器
Joh*_*ohn 18
我不确定你的第一个问题是什么,但如果你想保存字典到文件,你应该使用该json
库.查看加载和放置函数的文档.
小智 12
我建议使用 JSON 格式而不是 pickle 格式保存您的数据,因为 JSON 的文件是人类可读的,这使您的调试更容易,因为您的数据很小。其他程序也使用 JSON 文件来读取和写入数据。你可以在这里阅读更多关于它的信息
您需要安装 JSON 模块,您可以使用 pip 来安装:
pip install json
# To save the dictionary into a file:
json.dump( data, open( "myfile.json", 'w' ) )
Run Code Online (Sandbox Code Playgroud)
这将创建一个名为 myfile.json 的 json 文件。
# To read data from file:
data = json.load( open( "myfile.json" ) )
Run Code Online (Sandbox Code Playgroud)
这会读取 myfile.json 数据并将其存储在数据对象中。
小智 10
保存并加载dict到文件:
def save_dict_to_file(dic):
f = open('dict.txt','w')
f.write(str(dic))
f.close()
def load_dict_from_file():
f = open('dict.txt','r')
data=f.read()
f.close()
return eval(data)
Run Code Online (Sandbox Code Playgroud)
json
如果字典或其他一些数据可以轻松地映射为JSON格式,我们也可以使用该模块。
import json
# Serialize data into file:
json.dump( data, open( "file_name.json", 'w' ) )
# Read data from file:
data = json.load( open( "file_name.json" ) )
Run Code Online (Sandbox Code Playgroud)
该解决方案带来了许多好处,例如,以不变的格式适用于Python 2.x和Python 3.x,此外,以JSON格式保存的数据可以在许多不同的平台或程序之间轻松传输。这些数据也是人类可读的。
由于 Pickle 有一些安全问题并且速度很慢(source),我会选择 JSON,因为它快速、内置、人类可读且可互换:
import json
data = {'another_dict': {'a': 0, 'b': 1}, 'a_list': [0, 1, 2, 3]}
# e.g. file = './data.json'
with open(file, 'w') as f:
json.dump(data, f)
Run Code Online (Sandbox Code Playgroud)
阅读也很简单:
with open(file, 'r') as f:
data = json.load(f)
Run Code Online (Sandbox Code Playgroud)
这与此答案类似,但正确实现了文件处理。
归档时间: |
|
查看次数: |
229903 次 |
最近记录: |