码迷,mamicode.com
首页 > 编程语言 > 详细

Python:打印某个路径下的所有文件

时间:2016-05-15 00:44:19      阅读:337      评论:0      收藏:0      [点我收藏+]

标签:python   find   递归   


打印某个路径下的所有文件,我们可以通过find命令实现(find 路径 -type f)。下面我通过 Python 的递归来实现这个功能。

[root@centos ~]# vim print_files.py


#!/usr/bin/python


import os

import sys


def print_files(path):

    lsdir = os.listdir(path)

    dirs = [i for i in lsdir if os.path.isdir(os.path.join(path,i))]

    files = [i for i in lsdir if os.path.isfile(os.path.join(path,i))]

    if files:

        for f in files:

            print os.path.join(path,f)

    if dirs:

        for d in dirs:

            print_files(os.path.join(path,d))


print_files(sys.argv[1])




测试:

我们打印下/etc/目录下的所有目录和文件,效果如下图:

[root@centos ~]# python print_files.py /etc/

技术分享


方法说明:

os.listdir:os模块的方法,打印目录里的所有文件,以列表形式存在;后面就可以使用列表重写:[i for i in lsdir]

os.path.isdir:os.path下的方法,返回的是布尔值,判断后边是不是一个目录。

os.path.isfile:os.path下的方法,返回的也是布尔值,判断后边是不是一个文件。

os.path.join:os.path下的方法,连接文件路径。os.path.join(path,i) :/etc/i

sys.argv:sys模块下的方法,是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,本例:

sys.argv[0] ------- print_files.py

sys.argv[1] ------- path


逻辑思路:

(1)先列出路径下的所有文件

(2)过滤目录

(3)过滤文件

(4)判断目录下是否有文件,若有就打印出该文件

(5)判断目录下是否有子目录,若有就通过递归再遍历子目录下的文件或者目录。




本文出自 “M四月天” 博客,请务必保留此出处http://msiyuetian.blog.51cto.com/8637744/1773443

Python:打印某个路径下的所有文件

标签:python   find   递归   

原文地址:http://msiyuetian.blog.51cto.com/8637744/1773443

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!