本文介绍了glob.glob中的错误,用于Windows中没有扩展的文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 在Windows XP上,glob.glob对于没有扩展名的文件无法正常工作。 例如C:\ Temp包含4个文件:2个带扩展,2个没有。 C:\ Temp> dir / b * aaaaa.aaa bbbbb.bbb ccccc ddddd C:\ Temp> dir / b * 。 ccccc ddddd C:\ Temp> python Python 2.3(# 46,Jul 29 2003,18:54:32)[MSC v.1200 32 bit(Intel)] on win32 输入help,copyright,credit等等。或许可证或更多信息。On Windows XP glob.glob doesn''t work properly for files without extensions.E.g. C:\Temp contains 4 files: 2 with extensions, 2 without. C:\Temp>dir /b *aaaaa.aaabbbbb.bbbcccccddddd C:\Temp>dir /b *.cccccddddd C:\Temp>pythonPython 2.3 (#46, Jul 29 2003, 18:54:32) [MSC v.1200 32 bit (Intel)] on win32Type "help", "copyright", "credits" or "license" for more information. [] 看起来像个bug。 Georgy - Georgy Pruss 电子邮件:''ZDAwMTEyMHQwMzMwQGhvdG1haWwuY29t\ n''。decode(''base6 4'') [] It looks like a bug. Georgy--Georgy PrussE-mail: ''ZDAwMTEyMHQwMzMwQGhvdG1haWwuY29t\n''.decode(''base6 4'')推荐答案 [] 似乎在任何情况下我都必须自己提取''nnn'。 类似于: 如果mask.endswith(''。''):#no extention意味着名字中根本没有点 list = glob.glob(mask [: - 1]) list = filter(lambda x:''。''不在x,列表中)#或[x for x in list in if''。''not in x] else: list = glob.glob(mask) G-: []It seems that in any case I''ll have to extract ''nnn'' by myself.Something like: if mask.endswith(''.''): # no extention implies actually no dots in name at alllist = glob.glob( mask[:-1] )list = filter( lambda x: ''.'' not in x, list ) # or [x for x in list if ''.'' not in x]else:list = glob.glob( mask ) G-: [] [] glob提供Unix样式路径名模式扩展如 _Python Library Reference_中所述:如果模式中有一个句点(。),那么它必须与文件名中的句号相匹配。 看起来像个bug。 glob provides "Unix style pathname pattern expansion" as documented in the_Python Library Reference_: If there''s a period (".") in the pattern, itmust match a period in the filename. It looks like a bug. 不,这是正确的行为。这是'Windows(仍然)搞砸了。 No, it''s proper behavior. It''s Windows that''s (still) screwy. 这篇关于glob.glob中的错误,用于Windows中没有扩展的文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
09-23 08:11