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 的真实路径(我在我的 env 上对其进行了测试)

于 2018-03-14T15:23:46.380 回答
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 回答