2011-09-25 60 views
1

這是我的代碼。基本上我認爲它應該像這樣工作self.list使有序列表self.contents將列表變成一個字符串,所以我可以在self.plbuffer.set_text(self.contents)的可滾動窗口中顯示self.list。那麼os.walk遍歷頂部定義的目錄,而不是find我用self.search找到的文件中找到的模式,然後它應該被追加到self.list。附加列表錯誤typeerror序列項o:期待字符串,找到列表

class mplay: 
    def search_entry(self, widget): 
    self.list = [] 
    self.contents = "/n".join(self.list) 
    self.plbuffer.set_text(self.contents) 
    search = self.search.get_text() 
    top = '/home/bludiescript/tv-shows' 
    for dirpath, dirnames, filenames in os.walk(top): 
     for filename in filenames: 
     if re.findall(filename, search): 
     self.list.append(os.path.join([dirpath, filename])) 

是什麼錯誤意味着我可以不追加使用os.path.join

error = file "./mplay1.py" , line 77 in search_entry 
      self.contents = "/n".join(self.list) line 
      typeerror sequence item o: expecting string, list found 
+0

此代碼不會運行。要麼給我們上課,要麼清理它,以便它運行......錯誤是什麼? – Benjamin

+0

確定類和完整的錯誤文本被添加,這只是整個程序的一部分。該程序本身loades當我使用search_entry函數,我得到錯誤 – user961559

+0

你錯過了:在你的第二個最後一行... – Benjamin

回答

1

列表必須是一個字符串列表,爲它工作到self.list:

"/n".join(["123","123","234"]) # works 
"/n".join([123, 123, 234]) #error, this is int 

您還可以得到一個錯誤,如果它是一個列表的列表,這可能是在你的情況:

"/n".join([[123, 123, 234],[123, 123, 234]]) # error 

拋出一個print self.list來查看它的外觀。

當你說它在別處運行良好時,可能是因爲列表的內容不同。

另外,請注意,加入一個空列表[]將返回一個空字符串,以便該行無效。

+0

但它在我的程序的另一部分該特定行 – user961559

+0

可能因爲在另一部分它實際上是在一個字符串上操作。你想用這條線做什麼?用新的行字符分開列表中的項目並將它們連接成一個新的字符串? – Benjamin

+0

所以你說它應該self.contents = append(「\ n」,self.list) – user961559