Python 使用 os.listdir() 的递归函数
Python recursive function by using os.listdir()
我正在尝试使用 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)
您的问题来自 abspath(obj)
,请尝试将其替换为 os.path.join(dir, obj)
以获得您的对象的真实路径(我在我的环境中对其进行了测试)
谢谢 Gabriel 和 Emilrn!这正是我想要从为我的一个项目提供的父目录中递归获取文件列表的方法。只是将更新后的代码留给以后需要的人。
#!/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)
我正在尝试使用 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)
您的问题来自 abspath(obj)
,请尝试将其替换为 os.path.join(dir, obj)
以获得您的对象的真实路径(我在我的环境中对其进行了测试)
谢谢 Gabriel 和 Emilrn!这正是我想要从为我的一个项目提供的父目录中递归获取文件列表的方法。只是将更新后的代码留给以后需要的人。
#!/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)