use*_*559 2 python search os.walk
所以我有一个os.walk代码
search = self.search.get_text()
top = '/home/bludiescript/tv-shows'
for dirpath, dirnames, filenames in os.walk(top):
for filename in filenames:
if fnmatch.fnmatch(filename, search)
print os.path.join([dirpath, filename])
Run Code Online (Sandbox Code Playgroud)
在python docs上它显示你可以匹配任何seq的chars与[seq]模式,但无论我如何尝试实现它给出如此类型的错误或根本没有结果.
那么匹配搜索中的seq汽车的正确实现是什么,因此它将打印出匹配的文件
我试过的实现
if fnmatch.fnmatch(filename, [search]) error i got was typeerror unhasable type : 'list'
if fnmatch.fnmatch[filename, search] error i got was typeerror fnmatch function is not subscriptable
if fnmatch.fnmatch([filename, search]) error typeerror fnmatch takes two arguments 1 given
if fnmatch.fnmatch([filename], search) error typeerror expected string or buffer
if fnmatch.fnmatch([search], filename) error typeerror expected string or buffer
if fnmatch.fnmatch(filename, search, [seq]) error nameerror global name seq not defined
if fnmatch.fnmatch(filename, '[search]')
Run Code Online (Sandbox Code Playgroud)
没有错误,但没有产生任何结果
搜索值
你好,mkv,merry 1,2,3,4,5,6,7等...
fnmatch实现了Unix shell通配符语法.因此,无论您在ls命令中输入什么(例如)都可以:
>>> fnmatch.fnmatch("qxx", "[a-z]xx")
True
>>> fnmatch.fnmatch("abc", "a??")
True
>>> fnmatch.fnmatch("abcdef", "a*f")
True
>>> fnmatch.fnmatch("abcdef", "a*[f-k]")
True
Run Code Online (Sandbox Code Playgroud)
请记住,fnmatch纯粹是一个字符串匹配操作.如果您发现使用不同的模式样式(例如,正则表达式)更方便,那么只需使用正则表达式操作来匹配您的文件名.