2013-07-22 39 views
0

我寫一個mapeditor的遊戲,遇到問題將信息寫入到文件麻煩循環列表和寫入文件

所以我寫的複製功能,將採取RECT你的鼠標上並複製它的IM另一個地方來保持圖像的路徑,但賦予它新的COORDS並將其附加到一個表面列表

我得到了工作,但是當我試圖把它寫入一個文件我有麻煩

這裏的for循環編寫它:

for index, item in enumerate(self.surface_list): 
    posfi.write('SURFACE:%s:%s:ground%s\n' % (self.surface_paths[index], item[1], item[2])) 

問題是有多個表面(rects)比圖像(監守我複製圖像),以便在self.surface_paths[index]有比圖像更rects所以列表索引超出範圍

我嘗試添加此if index < len(self.surface_paths):但這使得它,所以它僅僅是因爲使用2個不同的圖像

IM寫第2個rects到文件

誰能告訴我,我怎麼能寫rects到文件,從路徑列表走出去的範圍

謝謝!

+0

聽起來像你的self.surface_list應該有與self.surface_paths相同的維數,但它不會。它與文件IO無關,但與數據操作無關。 – Mai

+0

所以當我複製曲面列表中的矩形我應該也複製圖像名稱 – Serial

+0

而不是使'surface_list'列表的點(我猜你在做什麼)列表,使其列表列表的列表的點,以便它和'surface_paths'使用的索引將保持同步。 – martineau

回答

1

這並不直接回答你的問題,但如果你想在當前功能完成後能夠訪問surface_list和/或surface_paths,你有沒有考慮過使用pickle

import cPickle as pickle #cPickle is faster than pickle 
#To save 
savePth = '' #Save file path 
f = open(savePth, 'w') #w for "write" 
pickle.dump(self.surface_list, f) 
f.close() 

現在你的變量被保存在savePth指向的任何文件中。加載:

import cPickle as pickle 
#To load 
f = open(savePth, 'r') #r for "read" 
self.surface_list = pickle.load(f) 
f.close()