Discuss / Python / 第二题

第二题

Topic source

Ireall

#1 Created at ... [Delete] [Delete and Lock User]

-- coding: utf-8 --

import os

def ListFile(dir): #获取当前目录的文件 return [i for i in os.listdir(dir) if os.path.isfile(os.path.join(dir,i))]

def ListDir(dir): #获取当前目录的子目录 return [i for i in os.listdir(dir) if os.path.isdir(os.path.join(dir,i))]

def ListDirPath(dir): #获取当前目录的子目录的相对路径 buffer = ListDir(dir) return [os.path.join(dir,j) for j in buffer]

def IsSubdir(dir): #判断当前目录是否有子目录 if ListDir(dir) == [] : return False else: return True

def GetFileName(file): #将扩展名去掉,获取文件名 return os.path.splitext(file)[0]

def SearchStrInDir(dir,str): #搜索当前目录中文件名含有对应字符串的文件 buffer = [] for i in ListFile(dir): if GetFileName(i).find(str) != -1: buffer.append(i) buffer = [os.path.join(dir,j) for j in buffer] return buffer

def NextFolds(folds): #获取一串目录的所有子目录,若无子目录则返回空列表 ghost = [] for i in folds: #relative path required if IsSubdir(i) == False: pass else: ghost = ghost + ListDirPath(i) return ghost

def SearchStrInSubdir(dir,str): #搜索当前目录及其所有子目录中文件名含有对应字符串的文件 buffer = [] folds = [dir] while True: if NextFolds(folds) == []: #若一串目录无子目录,则在其中进行搜索后即停止搜索 for i in folds: buffer = buffer + SearchStrInDir(i,str) break else: for i in folds: #若一串目录有子目录,在这些子目录中继续搜索 buffer = buffer + SearchStrInDir(i,str) folds = NextFolds(folds) return buffer


  • 1

Reply