如何利用Python遍历文件夹

 我来答
从空去听8
2017-11-04 · TA获得超过7440个赞
知道大有可为答主
回答量:6907
采纳率:93%
帮助的人:5603万
展开全部

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

帐号已注销
2023-02-14
知道答主
回答量:47
采纳率:33%
帮助的人:1.2万
展开全部

方法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)

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式