前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python - 遍历目录

python - 遍历目录

作者头像
phith0n
发布2020-10-15 22:07:18
1.3K0
发布2020-10-15 22:07:18
举报
文章被收录于专栏:离别歌 - 信息安全与代码审计

    一门语言,如果知道了基本语法,知道输入输出、文件操作、数据库的操作、通信(socket等),基本上就可以开始开发了。剩下的知识就是在开发中慢慢学习与积累。这也是我学习一门新语言首先去了解的部分。现在的语言五花八门,其实归根结底也就是这些内容。

    大家也可能在学习中感到迷茫,好像新的东西自己不知道怎么去用。所以,把上面这些点都能看到,就开始做自己头脑中想过的那些程序吧。

    说了这么多废话,进入主题……我曾经写了C语言的遍历目录PHP的遍历目录,今天来说一下python遍历目录,也算给大家一个对比,以及学习我上面说的:文件操作。


    程序要实现的目的是遍历某个目录,并把其中的所有文件中某段内容替换掉。

代码语言:javascript
复制
import os

def replace_str(FilePath,SourceStr,ObjectStr):
    file = open(FilePath,"r")
    str = file.read()
    str = str.replace(SourceStr,ObjectStr)
    file.close()
    file = open(FilePath,"w")
    file.write(str)
    file.close()

def getfile(path):
    for file in os.listdir(path):
        file = os.path.join(path,file)
        if os.path.isdir(file):
            getfile(file)
        else:
            replace_str(file,"abcd","")

rootpath = "e:\\01"
getfile(rootpath)

    我们要遍历目录,首先导入os模块。import os

    先跳过两个函数,看到我们最下面两行。我们就是需要遍历rootpath目录,将之传入getfile函数。

    getfile是个递归函数,遍历目录是一定要用递归的。运用os.listdir()获取所有的文件(包括目录和文件),获取到的是一个list,用for ..in遍历list,然后用os.path.isdir()函数判断当前的文件是否是一个目录。

    如果是目录则递归执行getfile()函数,否则就进入replace_str()函数。

    大概就是这个过程。代码也很简单,结合我前两篇文章,应该不难理解。主要是对比,看看三种语言完成一个任务,各自有什么优劣。


补记:

    遍历目录,其实python的os模块已经给出了一个函数。

    generator = os.walk(top,topdown=True,onerror=None)

    它返回的对象是一个generator类型对象,我们要使用for语句来遍历它:

代码语言:javascript
复制
generator = os.walk(r"E:\Python\pro")
for i in generator:
    print i

    我们会发现,i 实际上是一个三元tuple,分别是此时的目录,此目录下的文件夹,此目录下的文件。所以我们上面的getfile函数可以简化如下:

代码语言:javascript
复制
def getfile(path):
    generator = os.walk(path)
    for (now_dir, _, file_list) in generator:
        for file in file_list:
            file = os.path.join(now_dir, file)
            replace_str(file, "abc", "")

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档