14

我刚刚开始使用 Python,但已经发现它比 Bash shell 脚本更有效率。

我正在尝试编写一个 Python 脚本,它将遍历从我启动脚本的目录分支的每个目录,并且对于它遇到的每个文件,加载此类的一个实例:

class FileInfo:

    def __init__(self, filename, filepath):
        self.filename = filename
        self.filepath = filepath

filepath 属性将是从根 (/) 开始的完整绝对路径。这是我希望主程序执行的伪代码模型:

from (current directory):

    for each file in this directory, 
    create an instance of FileInfo and load the file name and path

    switch to a nested directory, or if there is none, back out of this directory

我一直在阅读有关 os.walk() 和 ok.path.walk() 的内容,但我想要一些关于在 Python 中实现它的最直接方法是什么的建议。提前致谢。

4

3 回答 3

17

我会使用os.walk以下方法:

def getInfos(currentDir):
    infos = []
    for root, dirs, files in os.walk(currentDir): # Walk directory tree
        for f in files:
            infos.append(FileInfo(f,root))
    return infos
于 2011-03-24T15:37:13.210 回答
7

尝试

info = []
for path, dirs, files in os.walk("."):
    info.extend(FileInfo(filename, path) for filename in files)

或者

info = [FileInfo(filename, path)
        for path, dirs, files in os.walk(".")
        for filename in files]

获取每个文件一个FileInfo实例的列表。

于 2011-03-24T15:36:26.933 回答
1

尝试一下

import os

for item in os.walk(".", "*"):
    print(item)
于 2013-04-05T09:36:58.227 回答