python递归列文件_python递归列举所有文件

python递归列举所有文件

秋酷 • 2018 年 01 月 18 日

使用递归列举特定目录下的全部文件

老习惯上代码#!usr/bin/python

#-*- coding:utf-8 -*-

__author__='ddc'

import os

path="/Users/ddc/Desktop/B10003012fj" #定义路径

global dir_num

dir_num=0 #递归函数执行次数

def Listdir(path,fullname=False):

#dir_num=0 #文件夹的数量

global dir_num

dir_num+=1

a=' '*dir_num

if not fullname:

if os.listdir(path):

for f_d in os.listdir(path):

p_con=os.path.join(path,f_d)

if os.path.isfile(p_con):

print(a+f_d) #打印文件名

else:

if os.path.isdir(p_con):

print(' '*(dir_num-1)+'----'+f_d) #打印文件夹名

Listdir(p_con) #递归打印文件夹下所有文件

dir_num-=1 #保持下次的格式能够与之前的文件夹位置相同

else:

print(a+'空')

else:

if os.listdir(path):

for f_d in os.listdir(path):

p_con=os.path.join(path,f_d)

if os.path.isfile(p_con):

print(a+p_con)

else:

if os.path.isdir(p_con):

print(' '*(dir_num-1)+'----'+p_con)

Listdir(p_con,fullname=True)

dir_num-=1

else:

print(a+'空')

Listdir(path,fullname=False)

解释

这次代码知识定义一个函数,函数参数有:需要列举的文件目录,以及一个是否以绝对地址的方式显示即布尔变量fullname。

首先定义一个全局变量 dir_num,这样函数在调用本身的时候这个值也会产生变化。即dir_num+=1

文件和文件夹要区分开

这时候需要使用一个判断语句,来判断内容是文件还是文件夹,如果是文件夹则需要继续进入其中回调本函数,如果是文件则直接打印即可

打印的格式定义了一个变量a来排版打印的格式,a的空格数和文件的深度(即层数)成正比,文件夹藏的越深

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值