在Python中创建树形目录列表
问题内容:
我正在尝试使用python列出目录和文件(recursivley):
./rootdir
./file1.html
./subdir1
./file2.html
./file3.html
./subdir2
./file4.html
现在,我可以很好地列出目录和文件(从此处借用)。但是我想以以下格式和ORDER列出它(这对我的工作非常重要。
/rootdir/
/rootdir/file1.html
/rootdir/subdir1/
/rootdir/subdir1/file2.html
/rootdir/subdir1/file3.html
/rootdir/subdir2/
/rootdir/file4.html
我不在乎它是如何完成的。如果我浏览目录,然后整理目录或按顺序整理所有内容。无论哪种方式,请先谢谢!
编辑:下面添加了代码。
# list books
import os
import sys
lstFiles = []
rootdir = "/srv/http/example/www/static/dev/library/books"
# Append the directories and files to a list
for path, dirs, files in os.walk(rootdir):
#lstFiles.append(path + "/")
lstFiles.append(path)
for file in files:
lstFiles.append(os.path.join(path, file))
# Open the file for writing
f = open("sidebar.html", "w")
f.write("<ul>")
for item in lstFiles:
splitfile = os.path.split(item)
webpyPath = splitfile[0].replace("/srv/http/example/www", "")
itemName = splitfile[1]
if item.endswith("/"):
f.write('<li><a href=\"' + webpyPath + "/" + itemName + '\" id=\"directory\" alt=\"' + itemName + '\" target=\"viewer\">' + itemName + '</a></li>\n')
else:
f.write('<li><a href=\"' + webpyPath + "/" + itemName + '\" id=\"file\" alt=\"' + itemName + '\" target=\"viewer\">' + itemName + '</a></li>\n')
f.write("</ul>")
f.close()
问题答案:
请尝试以下操作:
for path, dirs, files in os.walk("."):
print path
for file in files:
print os.path.join(path, file)
您不需要从中打印条目,dirs
因为在路径中将访问每个目录,因此稍后将使用进行打印print path
。