几个星期前我开始学习python。
现在我已经开始创建一个程序来创建一个字典,将一个item1添加为一个字符串,添加一个由数字组成的item2并在此之后保存它。但它并没有按照我想要的方式运作。似乎保存工作不正常似乎会覆盖现有项目。
在发布之前,我已经在Stackoverflow上彻底搜索了一个解决方案,但我无法让它工作。
这是我的代码:
import pickle
import os
if not os.path.exists( 'C:\path' ):
os.makedirs( 'C:\path' )
dict = {}
dict = pickle.load( open( "dict.txt", "rb" ) )
def add_dict(item):
for item in dict:
if not item in dict:
dict.update({item1 : item2})
print ("thx")
print (dict)
print ("added")
if item in dict:
print("item already exists.")
return
return
item1 = input("insert Item1: ")
item1 = item1.lower()
item2 = input("insert item2: ")
pickle.dump(dict, open("C:\path\dict.txt", "wb"))
我希望这不是一个特定的案例。
编辑:我编辑了我的代码,使其不那么具体,并犯了两个错误,现在已修复。
import pickle
import os
if not os.path.exists( 'C:\path' ):
os.makedirs( 'C:\path' )
dict = {}
item1 = input('insert item1 ')
item1 = buch.lower()
item2 = input('insert item2: ')
dict.update({item1: item2})
print("thx")
print(dict)
print("added")
pickle.dump(dict, open("C:\path\dict.txt", "wb"))
这是没有该功能的代码。
答案 0 :(得分:0)
编辑后的代码仍有错误。
我把整个事情改写为pythonic。
import os
import pickle
def read_data(filename):
try:
return pickle.load(open(filename, 'rb'))
except FileNotFoundError:
return {}
def write_data(filename, data):
try:
os.makedirs(os.path.dirname(filename))
except FileExistsError:
pass
pickle.dump(data, open(filename, 'wb'))
def main():
filename = os.path.join(os.path.dirname(__file__), 'dict.txt')
data = read_data(filename)
key = input('insert item1 ').lower()
value = input('insert item2: ')
data[key] = value
print(data)
write_data(filename, data)
if __name__ == '__main__':
main()
我使用了有意义的名字,并没有调用变量dict
,因为dict是一个你不想覆盖的内置。
首先我们读取文件。如果它不存在,我们捕获错误并使用空字典表示数据。
其次,我们获取新数据并更新字典。
最后我们将字典写回磁盘并创建目标文件夹(如果它不存在。)