将os.walk()保存到变量中

2 投票
2 回答
2263 浏览
提问于 2025-04-17 17:37

我可以把os.walk()的输出保存到变量里吗?我试过用basepath, directories, files = os.walk(path),但没成功。我想处理一个目录和它下面的一个特定子目录里的文件。这样做有可能吗?谢谢!

2 个回答

1

我想处理一个目录里的文件,还有一个特定的子目录。这样做可以吗?

如果你只想这样做,那就试试下面的代码:

[e for e in os.listdir('.') if os.path.isfile(e)] + os.listdir(special_dir)
3

os.walk() 是一个函数,它会返回一个生成器,这个生成器会逐个返回从你指定的起始路径开始的所有文件和文件夹,就像在树上遍历一样。如果你只想处理某个文件夹里的文件以及一个特定的子文件夹,那么你可以结合使用 os.listdir()os.path.isfile() 还有 os.path.isdir() 来获取你想要的内容。

可以这样做:

def files_and_subdirectories(root_path):
    files = []
    directories = []
    for f in os.listdir(root_path):
        if os.path.isfile(f):
            files.append(f)
        elif os.path.isdir(f):
            directories.append(f)
    return directories, files

然后这样使用它:

directories,files = files_and_subdirectories(path)

撰写回答