2

関数に拡張子を渡して、その関数にその拡張子を持つすべてのファイルを小文字と大文字の両方でプルさせる必要があります。

たとえば、 に合格した場合、次のようmovに機能する必要があります。

videos = [file for file in glob.glob(os.path.join(dir, '*.[mM][oO][vV]'))] 

小文字の入力が与えられた場合、上記の下位と上位の組み合わせをどのように達成しますか?

4

4 に答える 4

6

このようなもの?

>>> def foo(extension):
...     return '*.' + ''.join('[%s%s]' % (e.lower(), e.upper()) for e in extension)
... 
>>> foo('mov')
'*.[mM][oO][vV]'
于 2012-04-13T21:02:35.743 に答える
5

globはとを呼び出すだけなので、自分自身を呼び出して、独自のマッチングを行うことができos.listdirます。探しているのが一致する拡張機能だけである場合、それは非常に単純なテストであり、正規表現として、またはfnmatch.fnmatchlistdir[-3:]

于 2012-04-13T21:00:37.970 に答える
0

文字列を大文字と小文字の間で簡単に変換できます。

>>> ext = 'mov'
>>> ext.upper()
'MOV'

したがって、関数でそれを使用してください。

于 2012-04-13T21:04:52.763 に答える
0

これを 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']

サブプロセスの詳細

于 2012-04-13T21:52:04.833 に答える