将项添加到字典并将其保存到txt文件

时间:2014-08-17 12:31:33

标签: python dictionary python-3.4

几个星期前我开始学习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"))

这是没有该功能的代码。

1 个答案:

答案 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是一个你不想覆盖的内置。

首先我们读取文件。如果它不存在,我们捕获错误并使用空字典表示数据。

其次,我们获取新数据并更新字典。

最后我们将字典写回磁盘并创建目标文件夹(如果它不存在。)