python遍历函数封装,python类封装与调用

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

例如:在C:\TDDOWNLOAD目录下有a.txt、b.txt两个文件,另有\sub1子文件夹,C:\TDDOWNLOAD\sub1下又有c.txt、d.txt两个文件。 1. os.walk os.walk()返回一个三元素的tuple:当前路径、子文件夹名称、文件列表。 import os def fun( path ):... for root, dirs, files in os.walk( path ):... for fn in files:... print root, fn... fun( r'C:\TDDOWNLOAD' )C:\TDDOWNLOAD a.txtC:\TDDOWNLOAD b.txtC:\TDDOWNLOAD\sub1 c.txtC:\TDDOWNLOAD\sub1 d.txt 2. glob.glob glob.glob()只接受一个参数,这个参数既代有路径,又代有匹配模式,返回值为一个列表。注意,glob.glob()无法直接穿透子文件夹,需要自己处理: def fun( path ):... for fn in glob.glob( path + os.sep + '*' ): # '*'代表匹配所有文件... if os.path.isdir( fn ): # 如果结果为文件夹... fun( fn ) # 递归... else:... print fn... fun( r'C:\TDDOWNLOAD' )C:\TDDOWNLOAD\a.txtC:\TDDOWNLOAD\b.txtC:\TDDOWNLOAD\sub1\c.txtC:\TDDOWNLOAD\sub1\d.txt '*'为匹配模式,代表匹配所有文件,只有这样才能将子文件夹查出来,以便递归深入,探查下一层的文件。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、虚拟空间、营销软件、网站建设、砚山网站维护、网站推广。

Python for-in Loop常见遍历方法

Python的for...in 循环有三种常见用法:

第一,按长度遍历 :

若不需要索引号index,可以直接用"for obj in obj-list"语句遍历

第二,若既需要索引,又需要成员值,可以用enumerate()函数

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串),同时输出数据和数据下标,常用于for-in循环。

第三,不关心索引,只希望同时遍历多个列表,可以用zip函数。

zip函数将多个列表作为输入,在每次迭代的时候,将每个列表的当前成员组合成一个元组输出。

如何利用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进行测试,不必非得在交互式环境下导入模块进行测试。


新闻名称:python遍历函数封装,python类封装与调用
标题来源:http://myzitong.com/article/hdcgpo.html