Python3 - 如何如何显示目录下所有文件

Python3 - 如何如何显示目录下所有文件

列出目录下的文件是个常见的操作,python 提供了非常简单的方法: os.walk

基本方法 os.walk

1
2
3
4
5
6
7
8
9
10
11
12
13
import os
import sys
# 获取某个目录下面的所有文件
def get_all_file(path):
    filepaths = []
    for root, dirs, files in os.walk(path):
        for name in files:
            filepaths.append(os.path.join(root, name))
    return filepaths


if __name__ == '__main__':
    print(get_all_file(sys.argv[1]))

运行

1
python3 how-to-list-files-in-dir.py .

输出

1
['./how-to-delete-item-from-dict.py', './how-to-concatenate-list.py', './how-to-use-zip.py', './README.md', './.gitignore', './.git/objects/38/c39402faef62e4db173320bc2b2b08bca6dd56',  ... ...

注意,这里会讲子目录的内容都列举出来,这是因为os.walk(top, topdown=True, onerror=None, followlinks=False):中饿 topdown 默认为 True。

如果想过滤某种类型文件,可以按照如下方法:

1
2
3
4
5
6
7
8
9
10
11
12
import os
import sys
# 获取某个目录下面的所有文件
def get_all_file(path, ext='*'):
    filepaths = []
    for root, dirs, files in os.walk(path):
        for name in files:
            if ext == '*' or name.endswith(ext):
                filepaths.append(os.path.join(root, name))
    return filepaths
if __name__ == '__main__':
    print(get_all_file(sys.argv[1], '.py'))

这样即可显示所有的.py 格式文件了。

1
['./how-to-delete-item-from-dict.py', './how-to-concatenate-list.py', './how-to-use-zip.py',... ...]

如果想显示所有子目录,可以如下方式:

1
2
3
4
5
6
7
8
9
10
11
import os
import sys
def get_all_dir(path):
    dirpaths = []
    for root, dirs, files in os.walk(path):
        for name in dirs:
            dirpaths.append(os.path.join(root, name))
    return dirpaths

if __name__ == '__main__':
    #print(get_all_dir(sys.argv[1]))

输出

1
['./.git', './assets', './tmp', './.git/objects', './.git/info', ... ...]

还有一种更简单的办法,显示目录 os.listdir(sys.argv[1])

1
print(os.listdir(sys.argv[1]))

输出

1
['./how-to-delete-item-from-dict.py', './how-to-concatenate-list.py', './how-to-use-zip.py', ... ... ]

补充一种办法(glob 模块):

1
2
3
4
5
6
import glob

path = './'
files = [f for f in glob.glob(path + "**/*.py", recursive=True)]
for f in files:
    print(f)

输出

1
2
3
4
./how-to-use-whoisclient.py
./how-to-convert-time-str-and-datetime.py
./how-to-delete-item-from-dict.py
... ...

以上在 python3.7 测试通过。

Rating: