如何利用Python遍历文件夹

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用Python遍历文件夹相关的知识,希望对你有一定的参考价值。

1. 基本实现

[root@localhost ~]# cat dirfile.py

import os
path='/tmp'for dirpath,dirnames,filenames in os.walk(path):    for file in filenames:
fullpath=os.path.join(dirpath,file)            print fullpath

执行结果如下:

[root@localhost ~]# python dirfile.py
/tmp/yum.log/tmp/pulse-3QSA3BbwpQ49/pid/tmp/pulse-3QSA3BbwpQ49/native/tmp/.esd-0/socket

2. 在上例的基础上传递参数

import os,sys
path=sys.argv[1]for dirpath,dirnames,filenames in os.walk(path):    for file in filenames:
fullpath=os.path.join(dirpath,file)            print fullpath

执行方式为:[root@localhost ~]# python dirfile.py /tmp

在这里,sys.argv[1]是接受参数,也可以定义sys.argv[2]接受第二个参数

3. 如何用函数实现

import os,sys
path='/tmp'def paths(path):
path_collection=[]        for dirpath,dirnames,filenames in os.walk(path):                for file in filenames:
fullpath=os.path.join(dirpath,file)
path_collection.append(fullpath)        return path_collectionfor file in paths(path):        print file

4. 如何封装成类

import os,sysclass diskwalk(object):        def __init__(self,path):
self.path = path        def paths(self):
path=self.path
path_collection=[]                for dirpath,dirnames,filenames in os.walk(path):                        for file in filenames:
fullpath=os.path.join(dirpath,file)
path_collection.append(fullpath)                return path_collectionif __name__ == '__main__':        for file in diskwalk(sys.argv[1]).paths():                print file

PS:

1> def __init__():函数,也叫初始化函数。

self.path = path可以理解为初始化定义了1个变量。 在后面的def里面调用的时候必须要使用self.path而不能使用path

2> __name__ == '__main__'

模块是对象,并且所有的模块都有一个内置属性 __name__。一个模块的 __name__ 的值取决于您如何应用模块。如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。但是您也可以像一个标准的程序样直接运行模块,在这种情况下, __name__ 的值将是一个特别缺省"__main__"。上述类中加上__name__ == '__main__'的判断语句,可以直接在终端环境下执行python dirfile.py /tmp进行测试,不必非得在交互式环境下导入模块进行测试。

参考技术A

方法1、利用函数os.walk()来实现遍历文件夹

os.walk函数的定义:返回三元元组dirpath:根路径(字符串),dirnames路径下的所有目录名,filenames路径下的所有非目录文件名。

其中目录名和文件名都是没有加上根路径的,所以需要完整路径时需要将目录名或文件名与根路径连接起来。

如下代码所示:

import os

roor = "C:\\dir"

for dirpath, dirnames, filenames in os.walk(root):

for filepath in filenames:

print os.path.join(dirpath, filepath)

方法2、利用函数os.listdir(),os.path.isdir(),os.path.isfile()

os.listdir()可以列出路径下所有文件或目录名,但是不包括当前目录.,上级目录..以及子目录下的文件.

os.path.isfile()和os.path.isdir()判断当前路径是否为文件或目录。

示例:

improt os

def listDir(rootDir):

for filename in os.listdir(footDir):

pathname = os.path.join(rootDir,filename)

if (os.path.isfile(filename)):

print pathname

else:

listDir(pathname)

python利用列表文件遍历

关键词:文件遍历/列表

思路:先制作目标文件列表(txt/csv...均可),再逐行读取列表文件

1. 制作列表

linux 终端输入:# find ./abc -type f > list.txt

目标文件夹为abc,此方法将abc文件夹下的所有文件(不包括文件夹)的路径写到list.txt中,若选取abc中部分文件,需指定关键字,如:# find ./abc -type f | grep ‘.png‘ > list.txt ,仅取文件名含‘.png’的文件

2. 遍历文件

for path in open("org_gray_mohu.txt"):
    path = path.replace(‘\n‘, ‘‘) # 去掉换行符
    img = cv2.imread(path, 0) # 一个读取图片的栗子

  

 

以上是关于如何利用Python遍历文件夹的主要内容,如果未能解决你的问题,请参考以下文章

python利用列表文件遍历

python 遍历文件夹

python,如何遍历一个目录,输出所有文件名

Python中如何遍历指定目录下的所有文件?

如何优雅的使用 Python 实现文件递归遍历

如何在 Python27 中遍历文件而不遇到 ValueError 并用空行完全遍历文件?