1

os.listdir() を使用して再帰関数を作成しようとしていますが、すべてのディレクトリに問題が発生し、すべてのファイルとディレクトリを一覧表示しています。
この種の問題を解決するには os.tree() を使用する方が良いことはわかっていますが、os.listdir() を使用してこれを解決する方法を知りたいです。ここに私の現在のコードがあります:

#!/bin/usr/py
from os.path import abspath
from os.path import isfile, isdir
import os
import sys

dir = sys.argv[1]

def recursive(dir):
    files = os.listdir(dir)
    for obj in files:
        if isfile(obj):
            print obj
        elif isdir(obj):
            print obj
            recursive(abspath(obj))

#no idea why this won't work???
recursive(dir)
4

2 に答える 2

2

あなたの問題はから来ています。abspath(obj)それを置き換えてos.path.join(dir, obj)、objへの実際のパスを取得してみてください(環境でテストしました)

于 2018-03-14T15:23:46.380 に答える
1

ガブリエルとエミルンに感謝します!これはまさに、プロジェクトの 1 つに提供された親ディレクトリからファイルのリストを再帰的に取得するために探していたものでした。後で必要になる人のために、更新されたコードをここに残しておきます。

#!/bin/usr/py
import os
import sys

dir = sys.argv[1]

def recursive(dir):
    files = os.listdir(dir)
    for obj in files:
        
        if os.path.isfile(os.path.join(dir,obj)):
            print ("File : "+os.path.join(dir,obj))
        elif os.path.isdir(os.path.join(dir,obj)):
            recursive(os.path.join(dir, obj))
        else:
            print ('Not a directory or file %s' % (os.path.join(dir, obj))

recursive(dir)
于 2020-11-13T03:00:24.280 に答える