在我的程序中,我有一个输入函数,它将一个字符串添加到具有多个其他值的列表中。在程序结束后,有没有办法将列表中的输入作为项目保留?
例如:
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)
答案 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()函数。