Python программа для просмотра каталогов и чтения информации о файле - PullRequest
13 голосов
/ 24 марта 2011

Я только начинаю работать с Python, но уже нашел его гораздо более продуктивным, чем сценарии оболочки Bash.

Я пытаюсь написать скрипт Python, который будет проходить через каждый каталог, который ответвляется от каталога, в котором я запускаю скрипт, и для каждого файла, с которым он сталкивается, загрузить экземпляр этого класса:

class FileInfo:

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

Атрибут filepath будет полным абсолютным путем от root (/). Вот макет псевдокода для основной программы:

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. Заранее спасибо.

Ответы [ 3 ]

17 голосов
/ 24 марта 2011

Я бы использовал 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
7 голосов
/ 24 марта 2011

Попробуйте

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 экземпляра на файл.

1 голос
/ 05 апреля 2013

Попробуйте

import os

для элемента в os.walk (".", "*"):

     print item 
...