カテゴリー
Uncategorized

Python の glob.glob に日本語突っ込むと何も返してこない件

import os
from fnmatch import fnmatch
def glob(pattern, recursive = True):
result = []
dirname, pattern = os.path.split(pattern)
for path, dirs, files in os.walk(dirname):
result.extend(os.path.join(path, f) for f in files if fnmatch(f, pattern))
if not recursive:
del dirs[:]
return result

「Python の glob.glob に日本語突っ込むと何も返してこない件」への3件の返信

glob.glob(u”ほげ/*”) みたく、ユニコードを渡してますか?

パターンでないパスの部分に ’¥[.*?¥]’ が含まれているのが原因でした。
エスケープ処理できればいいのですが、’[’ は多くのファイルシステムでファイル名として使用できる文字なので判別するのは難しそうですね。
globbing はファイルシステムとの親和性が高いのがメリットだと思っていたのですがこれはどう考えるべきか。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です