如何在程序结束后将字符串保留在列表项中 - python

时间:2015-11-24 09:20:22

标签: python arrays

在我的程序中,我有一个输入函数,它将一个字符串添加到具有多个其他值的列表中。在程序结束后,有没有办法将列表中的输入作为项目保留?

例如:

list = ['a', 'b', 'c']

addToList = input('Type string to add to list: ')

list.append(addToList)

如果我通过变量'addToList'添加字符串'd',我怎么能这样做,以便下次运行程序时'd'将成为列表中的项目

看起来像这样:

list = ['a', 'b', 'c', 'd']

addToList = input('Type string to add to list: ')

list.append(addToList)

4 个答案:

答案 0 :(得分:0)

将列表写在文件上,您可以这样做:

myFile = open('test.txt', 'w')
for item in myList:
    print>>myFile, item

答案 1 :(得分:0)

您可以按照tombam95的建议将其写成字符串或JSON对象,然后在再次启动程序时从中读取。

>>> file_ = open("test.json", "w")
>>> import json
>>> file_.write(json.dumps(["hi", "bye"]))
>>> file_.close()
>>> newf = open("test.json", "r")
>>> li = json.loads(newf.readline())
>>> li
[u'hi', u'bye']
>>> 

您也可以搁置该变量,您可以在Python文档中阅读有关搁置here的更多信息。

答案 2 :(得分:0)

使用搁置模块:

import shelve

db = shelve.open('mydata')  #=> creates file mydata.db
db['letters'] = ['a', 'b', 'c']
db.close()

#Time passes...

db = shelve.open('mydata')
print(db['letters'])
['a', 'b', 'c']
temp = db['letters']
temp.append('d')
db['letters'] = temp
db.close()

#Time passes...

db = shelve.open('mydata')
print(db['letters'])
['a', 'b', 'c', 'd']

答案 3 :(得分:0)

您可以使用pickle将对象直接转储到文件,然后在下次启动程序时可以直接将其读回新的列表对象。

如果文件不存在,此示例将创建该文件。 (以下示例中的文件将在您的工作目录中创建,除非路径是完全限定的)

import pickle

# Try and open the storage file
try:
    with open('storage_file', 'r') as f:
        my_list = pickle.load(f)

except (IOError, ValueError, EOFError):
    # File did not exist (IOError), or it was an invalid format (ValueError, EOFError)
    my_list = ['a', 'b', 'c']

addToList = input('Type string to add to list: ')
my_list.append(addToList)

print('List is currently: {}'.format(my_list))

# List is now updated, so write it back
with open('storage_file', 'w') as f:
    my_list = pickle.dump(my_list, f)

作为旁注,请不要使用 list 这个词作为变量,因为它会隐藏范围内的list()函数。