Python:用于递归打印文件和文件夹的输出

时间:2011-04-24 14:21:14

标签: python

我编写了一个python函数,以递归方式打印出文件和文件夹,但现在我不确定如何以美学方式显示它(以纯文本形式)。如何显示文件夹结构?

2 个答案:

答案 0 :(得分:5)

如果你编写一个函数来将目录结构作为嵌套列表返回,如下所示:

['DIR1/',['fileA','fileB','DIR3/',['fileE','fileF']],'DIR2/',['fileC','fileD']]

然后您可以使用pprint.pformat创建可传递的字符串表示形式:

import pprint
import textwrap
import re

data=['DIR1/',['fileA','fileB','DIR3/',['fileE','fileF']],'DIR2/',['fileC','fileD']]
print(textwrap.dedent(re.sub(r"[\]\[',]", r' ',
                             pprint.pformat(data,indent=4,width=1))))

产量

DIR1/  
    fileA  
    fileB  
    DIR3/  
        fileE  
        fileF    
DIR2/  
    fileC  
    fileD   

注意:上面的代码假定您的文件和目录名称不包含任何字符,[]' ...

答案 1 :(得分:2)

您是在寻找纯文本命令行显示还是GUI?

对于命令行显示,只需使用递归函数将“缩进”变量传递给递归调用,为每个级别增加它:

toplevel/
   level2/
      file.txt
      file2.txt
   level2_again/
      file3.txt

对于GUI - 使用相关框架提供的小部件。例如,PyQtQTreeView小部件。