GNU/Linuxシステム上のPythonでは、すべての.MOV
または.AVI
のファイルを再帰的にスキャンして格納するための最も速い方法は何でしょうかリストに?特定の拡張子を持つディレクトリにファイルリストを作成する最速の方法
答えて
現在のディレクトリにあるファイルのリストの例。特定のパスに対してこれを展開することができます。
import glob
movlist = glob.glob('*.mov')
あなたは、ファイルの整合のためにrecuresive歩くとglob.glob()またはfnmatch.filter()のために)(os.walk使用することができます。
チェックこれはanswer
私はOSを使用したいです.walkディレクトリをスキャンして、os.path.splitextに接尾辞をつけて自分でフィルタリングします。
suffixes = set(['.AVI', '.MOV'])
for dirpath, dirnames, filenames in os.walk('.'):
for f in filenames:
if os.path.splitext(f)[1] in suffixes:
yield os.path.join(dirpath, f)
大文字と小文字を区別しないマッチングを適用するのに簡単に適応できるので、おそらくこれが最適な解決策です。 – ekhumoro
pattern = re.compile('.*\.(mov|MOV|avi|mpg)$')
def fileList(source):
matches = []
for root, dirnames, filenames in os.walk(source):
for filename in filter(lambda name:pattern.match(name),filenames):
matches.append(os.path.join(root, filename))
return matches
[fnmatch](http://docs.python.org/library/fnmatch.html#module-fnmatch)モジュールでは、非常に単純なグロブパターンしかサポートされないため、フィルタは機能しません。 – ekhumoro
@ekhumoroもし動作すれば、シンボル([]、?、?、*、())はglob、pythonのテストコードに許可され、どの作品を参照してください – Jhonathan
あなたのパターンは '* [movMOVaipg()]'と等価です。これは、例えば '* .i'、' * .a'、 '* .M'などと一致しますが、_not_' * .MOV'、 '* .avi'などと一致します。 – ekhumoro
のPython 2.xの:
import os
def generic_tree_matching(rootdirname, filterfun):
return [
os.path.join(dirname, filename)
for dirname, dirnames, filenames in os.walk(rootdirname)
for filename in filenames
if filterfun(filename)]
def matching_ext(rootdirname, extensions):
"Case sensitive extension matching"
return generic_tree_matching(
rootdirname,
lambda fn: fn.endswith(extensions))
def matching_ext_ci(rootdirname, extensions):
"Case insensitive extension matching"
try:
extensions= extensions.lower()
except AttributeError: # assume it's a sequence of extensions
extensions= tuple(
extension.lower()
for extension in extensions)
return generic_tree_matching(
rootdirname,
lambda fn: fn.lower().endswith(extensions))
引数を指定してルートフォルダと拡張子または拡張子のタプルmatching_ext
かmatching_ext_ci
のいずれかを使用します。
>>> matching_ext(".", (".mov", ".avi"))
を私は提案しますos.walk
と慎重にreading of its documentationの使用。
[f for root,dirs,files in os.walk('/your/path') for f in files if is_video(f)]
is_video
であなたの拡張子を確認:
これは、1つのライナーアプローチかもしれません。
- 1. ディレクトリ内の特定の拡張子を持つファイルのみを取得する
- 2. コンテンツと特定の拡張子を持つファイルを作成する
- 3. Filename特定の拡張子とディレクトリを持つリストファイルを表示するフィルタ
- 4. ディレクトリ全体で特定の拡張子を持つファイルを探して別のサーバーにコピーする方法
- 5. CMake:特定のファイル拡張子のみを別のディレクトリにコピーする方法
- 6. 複数のディレクトリから特定の拡張子を持つバッチファイルのコピーファイルは
- 7. ディレクトリ内のファイルの拡張子を確認するか、異なる拡張子amog特定の拡張子を検索する方法をObjective-Cの
- 8. アセンブリMIPS - 特定の拡張子のファイルを作成する
- 9. SaveFileDialog特定の拡張子を持つファイルのみを表示
- 10. 拡張機能のディレクトリを特定する方法
- 11. ディレクトリ構造をウォークスルーし、特定の拡張子を持つファイルを1つ上のレベルに移動します。
- 12. ファイルリストの場合のファイル拡張子の検索方法は?
- 13. 特定の拡張子を持つASP.Netリダイレクト
- 14. Python 3で特定のファイル拡張子を持つ一時ファイル。
- 15. ファイルリストの拡張子は、TYPO3の例外
- 16. 拡張子の名前とアイコンをファイル拡張子で取得する最速の方法は?
- 17. .pdf拡張子を持つ一時ファイルを作成するtempnam
- 18. 特定のファイルの.php拡張子を追加する方法
- 19. phpの特定の拡張子をチェックする方法
- 20. Gitignore - 特定のディレクトリ内の特定の拡張子のファイルを除外する方法は?
- 21. Scalaのディレクトリの下に特定の拡張子を持つすべてのファイルを一覧表示します
- 22. Innoセットアップインストール後に特定の拡張子を持つファイルをクリーンアップする
- 23. gitattributes - 拡張子のないbashスクリプトファイルを特定する方法
- 24. 魚のシェルで特定の拡張子を持つファイルを隠すには?
- 25. Androidで特定の拡張子を持つすべてのファイルを見つける方法は?
- 26. 特定の拡張子を持つファイル名の場所をコピーする
- 27. 特定の項目を含むディレクトリを見つける最速の方法
- 28. 拡張子の付いた特定の名前を持つ関数を要求し、拡張子を持たない特定の名前を返す
- 29. 特定のファイル拡張子をUNIXの別のディレクトリに移動する
- 30. ドライブ内の特定の拡張子を持つすべてのファイルのリストを取得する方法は?
Fastestには、ネイティブコードを使用するための拡張機能が含まれている可能性があります。しかし、本当にそれが欲しいですか? –
あなたがそれをしたくない場合でも、私たちが話しているファイルとディレクトリの数によっては、 'os.walk()'の結果を処理するよりも、 'find'コマンドを実行する方が速いかもしれません。しかし、 'os.walk()'の解決策が十分に速ければ、もっとエレガントで理解しやすくなります。 –