In Python, fastest way to build a list of files in a directory with a certain extension

后端 未结 6 1286
清酒与你
清酒与你 2021-01-12 08:34

In Python on a GNU/Linux system, what\'s the fastest way to recursively scan a directory for all .MOV or .AVI files, and to store them in a list? <

6条回答
  •  不要未来只要你来
    2021-01-12 09:01

    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))
    

    Use either matching_ext or matching_ext_ci with arguments the root folder and an extension or a tuple of extensions:

    >>> matching_ext(".", (".mov", ".avi"))
    

提交回复
热议问题