我正在尝试列出当前文件夹中的所有文件以及当前文件夹的文件夹中的文件。 这就是我一直在做的事情:
import os
def sendFnF(dirList):
for file in dirList:
if os.path.isdir(file):
print 'Going in dir:',file
dirList1= os.listdir('./'+file)
# print 'files in list', dirList1
sendFnF(dirList1)
print 'backToPrevDirectory:'
else:
print 'file name is',file
filename= raw_input()
dirList= os.listdir('./'+filename)
sendFnF(dirList)
这段代码确实让我进入了当前目录的文件夹。但是当谈到子文件夹时;它将它们视为文件。 知道我做错了什么吗? 提前致谢, Sarge中。
答案 0 :(得分:1)
将./
添加到路径中基本上什么也没做。另外,仅仅因为您使用目录路径递归调用函数不会更改当前目录,从而更改文件路径中.
的含义。
您的基本方法是正确的,使用os.path.join()
进入目录。最好重新构建代码,以便在listdir()
开始时sendFnF()
:
def sendFnF(directory):
for fname in os.listdir(directory):
# Add the current directory to the filename
fpath = os.path.join(directory, fname)
# You need to check the full path, not just the filename
if os.path.isdir(fpath):
sendFnF(fpath)
else:
# ...
# ...
sendFnf(filename)
尽管如此,除非这是一个练习,否则你可以使用os.walk()