this is my code. basicily i think it should work like this self.list makes a ordered list self.contents turns a list into a string so i can display self.list in a scrollable window with self.plbuffer.set_text(self.contents). then os.walk traverses the directory defined in top than findall takes what i write in self.search finds the pattern in filenames and then it should be appended to self.list.
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 filenam开发者_C百科es:
if re.findall(filename, search):
self.list.append(os.path.join([dirpath, filename]))
what does this error mean can i not append to self.list using 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
The list must be a list of strings for it to work:
"/n".join(["123","123","234"]) # works
"/n".join([123, 123, 234]) #error, this is int
You also get an error if it is a list of lists, which is probably the case in yours:
"/n".join([[123, 123, 234],[123, 123, 234]]) # error
Throw in a print self.list to see what it looks like.
When you say it runs fine elsewhere, probably that is because the content of the list is different.
Also, note that joining an empty list [] will return an empty string, so that line is effectively doing nothing.
精彩评论