擅长:python、mysql、java
<p>文件名<a href="https://en.wikipedia.org/wiki/Unicode_equivalence#Normalization" rel="nofollow noreferrer">normalized</a>的方式依赖于文件系统和操作系统。您的特定正则表达式可能与规范化方法不正确匹配。因此,可以通过<a href="https://stackoverflow.com/users/711380/remram">remram</a>来考虑这个解决方案:</p>
<pre><code>import fnmatch
def myglob(pattern, directory=u'.'):
pattern = unicodedata.normalize('NFC', pattern)
results = []
enc = sys.getfilesystemencoding()
for name in os.listdir(directory):
if isinstance(name, bytes):
try:
name = name.decode(enc)
except UnicodeDecodeError:
# Filenames that are not proper unicode won't match any pattern
continue
if fnmatch.filter([unicodedata.normalize('NFC', name)], pattern):
results.append(name)
return results
</code></pre>
<p>我在这里遇到了一个类似的问题:<a href="https://stackoverflow.com/questions/29903338/filesystem-independent-way-of-using-glob-glob-and-regular-expressions-with-unico">Filesystem independent way of using glob.glob and regular expressions with unicode filenames in Python</a></p>