用python查找指定格式或名稱的文件及修改指定文件夾名稱

寫這個也是爲了能更好的學習python,大家有什麼意見可以提出來,這個代碼直接放到編譯器中運行即可。

#-*- coding: GBK -*-
import os, sys, re

newdir = ""

#遞歸搜索函數
def search(rootdir,searchdirname):
    if os.path.isdir(rootdir):
        #print rootdir
        #分離路徑和文件夾
        split1 = os.path.split(rootdir)
        #print split1[1]

        #判斷是否爲指定的文件夾
        if split1[1] == searchdirname:
            print "找到文件夾:%s" % (rootdir)
            try:
                #將文件夾名稱改爲新的文件夾名稱
                os.rename(rootdir,split1[0]+"\\"+newdir)
                print "文件夾 [%s] 已改名爲 [%s]" % (rootdir,newdir)
            except:
                pass

        #遍歷指定文件夾下的內容(文件和文件夾列表)
        listnew = os.listdir(rootdir)

        for l1 in listnew:
            path = rootdir + "\\" + l1
            #遞歸調用
            search(path,searchdirname)
    else:
        #print '不是文件夾:%s' % (rootdir)
        return
    
#搜索指定格式的文件    
def find_file_by_pattern(pattern,base):   
    '''''查找給定文件夾下面所有 '''  
    re_file = re.compile(pattern)   
    if base == ".":   
        base = os.getcwd()   
           
    final_file_list = []   
    #print base   
    cur_list = os.listdir(base)   
    for item in cur_list:   
        print item
        full_path = os.path.join(base, item)   
        if full_path.endswith(pattern):#不能寫成單引號,單引號達不到預期的效果
        # print full_path   
            #bfile = os.path.isfile(item)
            if os.path.isfile(full_path):
               if re_file.search(full_path):
                   print re_file.search(full_path).group()
                   final_file_list.append(full_path)   
            else:   
               final_file_list += find_file_by_pattern(pattern,full_path)
        #for filename in re_file.findall(final_file_list):
           # print filename
        else:
            continue
    return final_file_list

def serchDir(startdir,dirname):
    search(startdir,dirname)
    
if __name__ == '__main__':
    root=raw_input("輸入搜索目錄:")
    key=raw_input("輸入待搜索的文件夾名稱:")
    #newdir = raw_input("文件夾改名爲:")
    #serchDir(root,key)
    base="".join([root,key])
    fileName=raw_input("請輸入要查找的文件名稱或後綴名:")
    for result in find_file_by_pattern(fileName,base):
        print result

 

 如果要查找指定名字的文件只需要將以下代碼屏幕即可

if full_path.endswith(pattern):#不能寫成單引號,單引號達不到預期的效果
......
......
......
else:
            continue

 

將這三行屏幕後就可以用文件名進行搜索了。

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