python遞歸列出目錄及其子目錄下所有文件


python遞歸列出目錄及其子目錄下所有文件

一、前言

      函數的遞歸,簡單來說,就是函數內部調用自己

先舉個小例子,求階乘

1 def factorial(n):
2     if n == 0:
3         return 1
4     else:
5         return n * factorial(n-1)

 

遞歸要注意兩個事項:

1、必須要有最后的默認結果,也就是最底層目錄的默認結果

    if n == 0

2、遞歸參數必須向默認結果收斂 

    factorial(n-1)

要用到 os 模塊下的幾個方法

要用到 os 模塊下的幾個方法

二、遞歸列出目錄里的文件(包括子目錄,類似 linux下的find)

ps : 這個代碼對運維來說值得一學,反正我是覺得 python 頗強大的, 剛學,大家不喜勿噴 *_*

 

要用到 os 模塊下的幾個方法

 

import os
1、os.listdir('/root/python/') #列出當前目錄下所有文件
2、os.path.isdir('/abc') #判斷是否是目錄,返回布爾值,不存在也返回false
3、os.path.isfile('/etc/passwd') #判斷是否是文件
4、os.path.join('/etc/', 'passwd') #連接文件,返回/etc/passwd

 

 1 #!/usr/bin/python
 2 
 3 import os
 4 import sys
 5 
 6 def print_files(path):
 7     lsdir = os.listdir(path)
 8     dirs = [i for i in lsdir if os.path.isdir(os.path.join(
 9 path, i))]
10     if dirs:
11         for i in dirs:
12             print_files(os.path.join(path, i))
13     files = [i for i in lsdir if os.path.isfile(os.path.joi
14 n(path,i))]
15     for f in files:
16        print os.path.join(path, f)
17 
18 print_files(sys.argv[1])

 

簡單解說下:

    lsdir 列出當前目錄所有東西(文件+目錄)

    dirs 返回當前目錄(path)下的所有目錄(不含子目錄)

         for i in dirs: 是 dirs目錄下的下一個子目錄,不斷遞歸到最后一層

      最后到達最深那層目錄,打印所有文件 files

注意:os.path.join 要進行連接操作的,我們需要完整目錄,不是相對目錄

 

三、調用及返回結果

python test.py /root/python

返回結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM