【问题标题】:Python recursive function by using os.listdir()使用 os.listdir() 的 Python 递归函数
【发布时间】:2018-03-14 09:14:16
【问题描述】:

我正在尝试使用 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)

【问题讨论】:

    标签: python-2.7 listdir


    【解决方案1】:

    您的问题来自abspath(obj),请尝试将其替换为os.path.join(dir, obj) 以获得您的obj 的真实路径(我在我的环境中对其进行了测试)

    【讨论】:

      【解决方案2】:

      感谢加布里埃尔和埃米尔恩!这正是我想要从为我的一个项目提供的父目录中递归获取文件列表的方法。只需将更新后的代码留给以后需要的人。

      #!/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)
      

      【讨论】:

        猜你喜欢
        • 2013-10-19
        • 2017-06-14
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        • 2012-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多