文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python的os遍历

2023-01-31 01:26

关注

使用python遍历目录用到

方法一:

os.path.walk(top, func, arg)

模块方法,该方法需要输入3个参数:

top为起始路径, 

func为回调函数(可以对遍历出的目录文件做处理),

arg为回调函数func的参数。

见下例子:

#!/usr/bin/env python
import os
import time

#定义一个回调函数,实现找出路径下所有访问时间大于3天的文件
def filter_file(arg, dirname, files):#回调函数的3个参数,arg,walk后查找的dirname, filename
    for f in files:
        file_path = os.path.join(dirname, f)
        if os.path.isfile(file_path): #判断是否为文件,是则继续
            if time.time() - os.path.getatime(file_path) > arg:#当前时间和文件的访问时间差大于3天则打印
                print file_path

#'/root'为起始路径
#filter_file为回调函数
#259200为回调函数的参数,是3天的秒数    
os.path.walk('/root', filter_file, (259200))


方法二:

使用os.walk

os.walk(top) 此方法默认只需要输入起始路径参数,它会返回一个迭代的对象,迭代出来是一个元组对象,里面有3个数据,第一个起始路径下的目录,第二个是这个目录下的所有目录列表,如果没有则是空列表,第三个是这个目录下所有的文件列表,如果没有则为空。

来看例子:

#!/usr/bin/env python
import os
for item in os.walk('test'):
    print item

输出:

('test', ['case8', 'case2', 'case1', 'case6'], ['downloadimg.py', 'wrapper.py', '1024.py'])
('test/case8', ['files1', 'files2'], ['simple_node.py', 'server.py', 'server.pyc', 'client.py'])
('test/case8/files1', [], ['test.txt'])
('test/case8/files2', [], ['test.txt'])
('test/case2', [], ['website.xml', 'handler.py'])
('test/case1', [], ['utils.py', 'text', 'rules.py', 'rules.pyc', 'handlers.py', 'utils.pyc', 'markup.py', 'test_output.html', 'handlers.pyc'])
('test/case6', [], ['simple_edit.dat', 'simple_edit.cgi'])

可以看出迭代出许多元组,每一元组第一个元素是test目录下的所有目录,第二个目录列表是第一个目录元素下的所有目录,没有的是空列表,第三个文件列表是第一个目录元素下的所有文件。

我们使用循环打印出文件:

#!/usr/bin/env python
import os
for dirpath, dirnames, filenames in os.walk('test'):
    if filenames:
        for f in filenames:
            print os.path.join(dirpath, f)

输出:

test/downloadimg.py
test/wrapper.py
test/1024.py
test/case8/simple_node.py
test/case8/server.py
test/case8/server.pyc
test/case8/client.py
test/case8/files1/test.txt
test/case8/files2/test.txt
test/case2/website.xml
test/case2/handler.py
test/case1/utils.py
test/case1/text
test/case1/rules.py
test/case1/rules.pyc
test/case1/handlers.py
test/case1/utils.pyc
test/case1/markup.py
test/case1/test_output.html
test/case1/handlers.pyc
test/case6/simple_edit.dat
test/case6/simple_edit.cgi


这两种方法可以根据需求选择。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯