这是我的代码。基本上我认为它应该像这样工作self.list使一个有序列表self.contents将一个列表转换为一个字符串,所以我可以在一个可滚动窗口中使用self.plbuffer.set_text(self.contents)显示self.list。然后os.walk遍历在topall中定义的目录,而不是我在self.search中找到的模式,然后将它附加到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 filenames:
if re.findall(filename, search):
self.list.append(os.path.join([dirpath, filename]))
这个错误意味着什么,我不能使用os.path.join
附加到self.listerror = file "./mplay1.py" , line 77 in search_entry
self.contents = "/n".join(self.list) line
typeerror sequence item o: expecting string, list found
答案 0 :(得分:1)
列表必须是字符串列表才能生效:
"/n".join(["123","123","234"]) # works
"/n".join([123, 123, 234]) #error, this is int
如果它是列表列表,您也会收到错误,这可能就是您的错误:
"/n".join([[123, 123, 234],[123, 123, 234]]) # error
投入打印self.list以查看它的外观。
当你说它在其他地方运行正常时,可能是因为列表的内容不同。
另外,请注意,加入空列表[]将返回一个空字符串,因此该行实际上什么都不做。