14

私は Python を使い始めたばかりですが、すでに Bash シェル スクリプトよりもはるかに生産的であることがわかっています。

スクリプトを起動するディレクトリから分岐するすべてのディレクトリをトラバースし、遭遇するファイルごとに、このクラスのインスタンスをロードする 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ファイルごとに1つのインスタンスのリストを取得します。

于 2011-03-24T15:36:26.933 に答える
1

それを試してみてください

import os

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