関数に拡張子を渡して、その関数にその拡張子を持つすべてのファイルを小文字と大文字の両方でプルさせる必要があります。
たとえば、 に合格した場合、次のようmov
に機能する必要があります。
videos = [file for file in glob.glob(os.path.join(dir, '*.[mM][oO][vV]'))]
小文字の入力が与えられた場合、上記の下位と上位の組み合わせをどのように達成しますか?
関数に拡張子を渡して、その関数にその拡張子を持つすべてのファイルを小文字と大文字の両方でプルさせる必要があります。
たとえば、 に合格した場合、次のようmov
に機能する必要があります。
videos = [file for file in glob.glob(os.path.join(dir, '*.[mM][oO][vV]'))]
小文字の入力が与えられた場合、上記の下位と上位の組み合わせをどのように達成しますか?
このようなもの?
>>> def foo(extension):
... return '*.' + ''.join('[%s%s]' % (e.lower(), e.upper()) for e in extension)
...
>>> foo('mov')
'*.[mM][oO][vV]'
globはとを呼び出すだけなので、自分自身を呼び出して、独自のマッチングを行うことができos.listdir
ます。探しているのが一致する拡張機能だけである場合、それは非常に単純なテストであり、正規表現として、またはfnmatch.fnmatch
listdir
[-3:]
文字列を大文字と小文字の間で簡単に変換できます。
>>> ext = 'mov'
>>> ext.upper()
'MOV'
したがって、関数でそれを使用してください。
これを Unix で実行している場合は、次の呼び出しを試みることができます。
from subprocess import Popen, PIPE
#replace the "/tmp/test/" and "*.test" with your search path and extension
args = ["find", "/tmp/test/", "-iname", "*.test"]
files = Popen(args, stdout=PIPE).stdout.readlines()
>>> files
['/tmp/test/a.Test\n', '/tmp/test/a.TEST\n', '/tmp/test/a.TeST\n', '/tmp/test/a.test\n']