伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

python文件遍历

来源:本站原创 浏览:124次 时间:2022-08-30

在linux系统下遍历文件不算是新鲜功能,如果给出一个目录,要根据这个目录的结构去做某些操作,这个就要到遍历了,谈到遍历就不能不说递归,因为遍历是递归的典型应用场景,那什么是递归?其实递归就是定义的函数又调用了自己,比如列出指定目录下的所有文件,如果这个目录下除了文件还有目录,就就需要再进入这个子目录里,依次类推直到没有目录了结束,递归比较抽象,我们直接上例子说明:


#!/usr/mport os

 

import os

 

def Rec(path):

  all_files = os.listdir(path)

  for file in all_files:

    pf = os.path.join(path,file)            

    if os.path.isdir(pf):

      Rec(pf)                  

    else:

      print os.path.join(path,pf)

 

Rec('/root/script')


这就是一个简单的列子,例子中如果变量pf是目录,就再调用Rec函数,如果不是就直接打印出目录和文件内容。

如果以上的例子比较难理解,那大家也不用担心,谁让咱用的是python这门大神的语言呢, 因为在python里已经给我们提供了一个os.walk()函数帮我们解决了这个较为烧脑的问题,这个函数接受一个目录,然后返回一个三元组tupple(dirpath, dirnames, filenames),,分别表示:

根路径,根路径下的子目录列表,根路径下的所有文件列表。

所以要遍历一个目录下文件,最后用os.path.join(dirpath, name).就可以得到文件的全路径了,我们来个实际例子,比如我要备份1台机器上的所有conf文件,我们采用os.walk()函数可以这样遍历所有系统的conf文件,然后拷贝到我们指定的目录中去,脚本如下:

import os, shutil, sys

 

if not os.geteuid()==0:

    sys.exit(0)

 

if not os.path.isdir("/backup"):

    os.mkdir("/backup", 384)

 

for root, dirs, files in os.walk('/'):

    for filename in files:

        if ".conf" in filename:

            abspath = os.path.join(root, filename)

            shutil.copy2(abspath, "/backup")


有了这个os.walk()函数可以帮我们很快遍历指定的文件夹内容,所以在实际中非常有用


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net