代码的第一个版本:
这会返回一个列表,但只包含少量文件名,而不是返回所有文件名的列表。
import os
def dig(directory):
c_path = []
for filename in os.listdir(directory):
path = os.path.join(directory, filename)
if os.path.isfile(path):
c_path.append(path)
else:
dig(path)
return c_path
directory = str(input("Enter Directory: "))
files = dig(directory)
for f in files:
print f
代码的第二版:
此版本不会返回列表,但会在函数内打印列表并打印所有文件名,所以我不知道第一个版本中返回列表的问题是什么。
import os
def dig(directory):
c_path = []
for filename in os.listdir(directory):
path = os.path.join(directory, filename)
if os.path.isfile(path):
c_path.append(path)
else:
dig(path)
for entry in c_path:
print entry
directory = str(input("Enter Directory: "))
files = dig(directory)
答案 0 :(得分:0)
您没有将递归dig()
输出附加到列表中(您只需将其调用)尝试使用:
def dig(directory):
c_path = []
for filename in os.listdir(directory):
path = os.path.join(directory, filename)
if os.path.isfile(path):
c_path.append(path)
else:
c_path += dig(path)
return c_path
虽然我建议您使用os.walk()
,因为它会为您完成所有肮脏的工作。