-1

ここでいくつかの問題に遭遇します。すべてのディレクトリを検索して印刷できますが、最長のパスが見つかりません。これが私の端末統計です。

14102 1 1 /ホーム/ボブ/デスクトップ

import os

def DFS(path, dirCallback = None, fileCallback = None):
    stack = []
    ret = []
    stack.append(path);
    while len(stack) > 0:
        tmp = stack.pop(len(stack) - 1)
        if(os.path.isdir(tmp)):
            ret.append(tmp)
            for item in os.listdir(tmp):
                stack.append(os.path.join(tmp, item))
            if dirCallback:
                dirCallback(tmp)
        elif(os.path.isfile(tmp)):
            ret.append(tmp)
            if fileCallback:
                fileCallback(tmp)
    return ret

def print_directory(path):
    print "dir: " + path

def print_file(path):
    print "file: " + path

d = DFS('~/', print_directory, print_file)

print max([x for x in d ],key=lambda x: x.count("/"))

ここで最長パスを出力できない理由がわかりません。私はPythonの初心者であり、英語の学習者でもあります。誤解がある場合はお知らせください。

更新: 現在、最長のパスを見つけることができますが、「~/」を使用してディレクトリを見つけることはできません。

Traceback (most recent call last):
  File "Search.py", line 29, in <module>
    print max([x for x in d ],key=lambda x: x.count("/"))
ValueError: max() arg is an empty sequence

これはエラーメッセージです。

4

1 に答える 1