码迷,mamicode.com
首页 > 编程语言 > 详细

python实现find -name的功能

时间:2016-05-19 19:36:45      阅读:365      评论:0      收藏:0      [点我收藏+]

标签:python search

  • 实现方式一:

使用pyhon的os模块,借助os.listdir();os.pah.isfile();os.path.isdir();os.path.join()等操作文件和目录的方法

思路:

从上往下,层层搜索,每一次迭代判断文件类型作为分叉点,

难点在于遇到逐层这里,用到了递归查询的概念

#!/usr/bin/python
# -*- coding:utf8 -*-
import os 
import os.path

def search(path,key):
    for i in os.listdir(path):
        if os.path.isfile(os.path.join(path,i)) and key in i:
            print os.path.join(path,i)
        if os.path.isdir(os.path.join(path,i)):
                        search(os.path.join(path,i),key)

pathword = raw_input(‘Enter path> ‘)
keyword = raw_input(‘Enter key> ‘)

search(pathword,keyword)
  • 实现方式二:

使用os模块的walk方法

walk(top, topdown=True, onerror=None, followlinks=False)

    Directory tree generator. 目录树的生成器,类似于tree命令,多次迭代实现

         dirpath(字串), dirnames(列表), filenames(列表)    -->元组

技术分享

#!/usr/bin/python
# -*- coding:utf8 -*-
import os
import os.path

def search(path,key):
    for i in os.walk(path):
        for j in i[2]:
            if key in j:
                print os.path.join(i[0],j)

pathword = raw_input(‘Enter path> ‘)
keyword = raw_input(‘Enter key> ‘)

search(pathword,keyword)


执行结果:

[root@docker01 tmp]# python search2.py 
Enter path> /etc   路径
Enter key> pass   关键词
/etc/passwd-
/etc/passwd
/etc/pam.d/password-auth-ac
/etc/pam.d/password-auth
/etc/pam.d/passwd
/etc/selinux/targeted/modules/active/modules/passenger.pp
/etc/security/opasswd


题目参考于廖老师的python教程:

链接:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013868321590543ff305fb9f9949f08d760883cc243812000#0

本文出自 “Zcy.gy” 博客,请务必保留此出处http://1064187464.blog.51cto.com/9108437/1775060

python实现find -name的功能

标签:python search

原文地址:http://1064187464.blog.51cto.com/9108437/1775060

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!