2013-12-18 213 views
0

當我將一個項目添加到列表list.append()list.insert()或任何其他方法時,當我加載文件備份時,我添加到列表中的項目不存在。此外,我想在另一個文件中的列表,以防萬一它有所作爲。Python將項目添加到列表?

代碼:

User = ["pig"] 
Pass = ["ham"] 
User.insert(len(User)+1, "cow") 
Pass.append("beef") 

我知道如何從其他文件得到的東西。

+1

http://www.mentalfloss.com/sites/default/legacy/blogs/wp-content/uploads/2010/02/400pancake_bunny。 jpg –

+4

第一次請求:請不要大寫你的變量名;符合Python風格指南。第二個要求:請重申您的問題,這是沒有道理的。當你說「加載文件備份」,你的意思是再次運行你的Python腳本? – bedwyr

+1

您現在使用哪些代碼從文件加載列表?你有沒有任何代碼在你修改後保存列表? –

回答

1
try: #load list from file if it (the file) exists 
    my_list = json.load(open("my_database.dat")) 
except IOError: #otherwise create the list 
    my_list = [] 
... 
#save list for next time .. 
json.dump(my_list,open("my_database.dat","wb")) 

是許多方法可以做到這

你也可以使用泡菜

try: #load list from file if it (the file) exists 
    my_list = pickle.load(open("my_database.dat")) 
except IOError: #otherwise create the list 
    my_list = [] 
... 
#save list for next time .. 
pickle.dump(my_list,open("my_database.dat","wb")) 

或做它用ast.literal_eval

try: 
    my_list = ast.literal_eval(open("some_file").read()) 
except IOError: 
    my_list = [] 
... 
#save list 
with open("some_file","wb") as f: 
    f.write(repr(my_list)) 
0

對於之間的簡單數據持久化的一個在一個良好的開端運行pickle

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import pickle 

def main(): 

    # Load the file if it exists other initialise the list 
    try: 
     replicating_cow = pickle.load(open("cows.p", "rb")) 
    except IOError: 
     replicating_cow = [] 

    replicating_cow.append('cow')       # Add another cow 
    print replicating_cow         # Print the list  
    pickle.dump(replicating_cow, open("cows.p", "wb")) # Save the list to disk 

if __name__ == "__main__": 
    main() 

每次運行後,我們得到一個新的牛:

$ python replicate_cow.py 
['cow'] 

$ python replicate_cow.py 
['cow', 'cow'] 

$ python replicate_cow.py 
['cow', 'cow', 'cow'] 

$ python replicate_cow.py 
['cow', 'cow', 'cow', 'cow'] 
+0

對不起,我按下意外輸入它說Pass = pickle.load(打開(「Password.p」)) TypeError:'str'不支持緩衝接口 – user3116196