Python - 获取文件夹中所有文件的列表(包含更多选项)

时间:2013-07-22 21:40:36

标签: python

是否存在一些通常的方法来枚举给定文件夹中的所有文件(以及可选的文件夹,可选择递归子目录)?所以我传递一个文件夹路径并获得生成完整路径的列表。

如果您展示如何从此结果中排除所有只读和所有隐藏文件,那就更好了。所以输入参数:

  • dir:文件夹的完整路径
  • option_dirs:包括列出的列表路径
  • option_subdirs:进程也是dir的所有子目录
  • option_no_ro:排除只读文件
  • option_no_hid:排除隐藏文件

Python2。

1 个答案:

答案 0 :(得分:5)

您应该查看os.walkos.access

对于实际实施,您可以执行以下操作:

import os

def get_files(path, option_dirs, option_subdirs, option_no_ro, option_no_hid):
    outfiles = []
    for root, dirs, files in os.walk(path):
        if option_no_hid:
            # In linux, hidden files start with .
            files = [ f for f in files if not f.startswith('.') ]
        if option_no_ro:
            # Use os.path.access to check if the file is readable
            # We have to use os.path.join(root, f) to get the full path
            files = [ f for f in files if os.access(os.path.join(root, f), os.R_OK) ]
        if option_dirs:
            # Use os.path.join again
            outfiles.extend([ os.path.join(root, f) for f in files ])
        else:
            outfiles.extend(files)
        if not option_subdirs:
            # If we don't want to get subdirs, then we just exit the first
            # time through the for loop
            return outfiles
    return outfiles