python-------------------查找文件名包含指定字符串的文件,打印完整路徑

# -*- coding: utf-8 -*-
# Author	:Gogh
# @Time		:2017/11/14 22:37
# @Email	:[email protected]
# 編寫一個search(s)的函數,將當前目錄及其所有子目錄下
# 查找文件名包含指定字符串的文件,打印完整路徑

import os, logging, pdb

def search(s):
    rootdir = 'C:/ '       # 指明被遍歷的文件夾

    #三個參數:分別返回1.父目錄 2.所有文件夾名字(不含路徑) 3.所有文件名字
    for parent, dirnames, filenames in os.walk(rootdir):
         for filename in filenames:      # 輸出文件信息
            # print "filename is:" + filename
            if filename.find(s) != -1:
                print "the full path of the file is:" + os.path.abspath(os.path.join(parent,filename)) # 輸出文件路徑信息

if __name__ == '__main__':
    search('.log')

# 兩種辦法實現查找指定目錄及子目錄下所有包含關鍵字的文件,並打印出路徑
logging.basicConfig(level=logging.DEBUG)

def search_dir(path, L):
        current_dir = os.listdir(path)
        #    pdb.set_trace()
        for n in current_dir:
            #        pdb.set_trace()
            new_path = os.path.join(path, n)
            if os.path.isfile(new_path):  # 需傳入路徑而非僅僅文件名,否則是FALSE
                logging.debug('%s is a file.' % n)
                L.append(new_path)
            else:
                search_dir(new_path, L)

        return L


def search(s):
        L = search_dir('.', [])

        #    pdb.set_trace()
        for file in L:
            #        pdb.set_trace()
            if file.find(s) != -1:
                logging.info('找到包含%s的文件路徑:%s' % (s, os.path.abspath(file)))


    # os.path.abspath(url) 並非返回url真正完整的絕對路徑,只是將當前目錄與url進行join操作
    # 例如,當前目錄爲 D:/workplace
    # url是 test.txt,實際是在 ./aaa/test.txt
    # 但該函數返回的是 D:/workplace/test.txt

if __name__ == '__main__':
        search('test')

發佈了66 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章