Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:递归打印文件和文件夹的输出_Python - Fatal编程技术网

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

Python:递归打印文件和文件夹的输出,python,Python,我已经编写了一个python函数,可以递归地打印文件和文件夹,但现在我不知道如何以美观的方式(以纯文本)显示它。如何显示文件夹结构?您是在寻找纯文本命令行显示还是在GUI中 对于命令行显示,只需使用递归函数将“缩进”变量传递给递归调用,并为每个级别增加该变量: toplevel/ level2/ file.txt file2.txt level2_again/ file3.txt 对于GUI-使用相关框架提供的小部件。例如,在PyQt中有QTre

我已经编写了一个python函数,可以递归地打印文件和文件夹,但现在我不知道如何以美观的方式(以纯文本)显示它。如何显示文件夹结构?

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

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

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

对于GUI-使用相关框架提供的小部件。例如,在
PyQt
中有
QTreeView
小部件。

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

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

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

对于GUI-使用相关框架提供的小部件。例如,使用
PyQt
时,会出现
QTreeView
小部件。

如果您编写一个函数以嵌套列表的形式返回目录结构,如下所示:

['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   

注意:如果编写函数以嵌套列表形式返回目录结构,则上述代码假定文件名和目录名不包含任何字符
,[]'

,如下所示:

['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   

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

对不起,这将是一个纯文本输出。对不起,这将是一个纯文本输出。使用空格或任何您想要的字符缩进目录和文件名…具体问题是什么?除了提示“用红色或绿色缩进”之外,你们还有别的吗?来吧,伙计们,这里有点创意。我敢肯定不止缩进是有用的。OP正在寻找“美学”,发挥你的想象力!使用空格或任何您想要的内容缩进目录和文件名…具体问题是什么?除了提示“用红色或绿色缩进”之外,你们还有别的吗?来吧,伙计们,这里有点创意。我敢肯定不止缩进是有用的。OP正在寻找“美学”,发挥你的想象力!该函数看起来如何?:)该函数看起来如何?:)