我如何在Python中获得给定目录中的所有文件(和目录)的列表?


当前回答

下面是一行python版本:

import os
dir = 'given_directory_name'
filenames = [os.path.join(os.path.dirname(os.path.abspath(__file__)),dir,i) for i in os.listdir(dir)]

这段代码列出给定目录名中所有文件和目录的完整路径。

其他回答

简单的方法:

list_output_files = [os.getcwd()+"\\"+f for f in os.listdir(os.getcwd())]

供参考添加扩展或ext文件的过滤器 进口操作系统

path = '.'
for dirname, dirnames, filenames in os.walk(path):
    # print path to all filenames with extension py.
    for filename in filenames:
        fname_path = os.path.join(dirname, filename)
        fext = os.path.splitext(fname_path)[1]
        if fext == '.py':
            print fname_path
        else:
            continue

我知道这是一个老问题。如果你在linux机器上,这是我遇到的一种简洁的方法。

import subprocess
print(subprocess.check_output(["ls", "/"]).decode("utf8"))

下面的代码将列出目录和目录下的文件

def print_directory_contents(sPath):
        import os                                       
        for sChild in os.listdir(sPath):                
            sChildPath = os.path.join(sPath,sChild)
            if os.path.isdir(sChildPath):
                print_directory_contents(sChildPath)
            else:
                print(sChildPath)

这是一种遍历目录树中每个文件和目录的方法:

import os

for dirname, dirnames, filenames in os.walk('.'):
    # print path to all subdirectories first.
    for subdirname in dirnames:
        print(os.path.join(dirname, subdirname))

    # print path to all filenames.
    for filename in filenames:
        print(os.path.join(dirname, filename))

    # Advanced usage:
    # editing the 'dirnames' list will stop os.walk() from recursing into there.
    if '.git' in dirnames:
        # don't go into any .git directories.
        dirnames.remove('.git')