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



打印某个路径下的所有文件,我们可以通过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:打印某个路径下的所有文件

评论关闭