# -*- coding: utf-8 -*-
import os.path
import os
def getcataloglist():
list =os.listdir()
L=[]
for file in list:
if os.path.isdir(file):
L.append(file)
return L
def search(catalog):
os.chdir(catalog)
list =os.listdir()
destination=[]
for eachfile in list:
eachfile=os.path.join(catalog,eachfile)
(donotcare,extension)=os.path.splitext(eachfile)
if extension=='.avi' or extension=='.rmvb' or extension=='.mp4':
destination.append(eachfile)
foldernamelist=getcataloglist()
for eachfolder in foldernamelist:
eachfolder=os.path.join(catalog,eachfolder)
destination+= search(eachfolder)
return destination
catalog= input()
list =search(catalog)
print(list)
f= open('videolist.txt','w')
print(os.getcwd())
f.writelines(list)
f.close()
# 综合应用了文件夹的递归以及输出到文件
# 标准答案
import os
def search_file(start_dir, target) :
os.chdir(start_dir)
for each_file in os.listdir(os.curdir) :
ext = os.path.splitext(each_file)[1]
if ext in target :
vedio_list.append(os.getcwd() + os.sep + each_file + os.linesep) # 使用os.sep是程序更标准
if os.path.isdir(each_file) :
search_file(each_file, target) # 递归调用
os.chdir(os.pardir) # 递归调用后切记返回上一层目录
start_dir = input('请输入待查找的初始目录:')
program_dir = os.getcwd()
target = ['.mp4', '.avi', '.rmvb']
vedio_list = []
search_file(start_dir, target)
f = open(program_dir + os.sep + 'vedioList.txt', 'w')
f.writelines(vedio_list)
f.close()
1.返回上一层目录较join更简洁
2.ext in target 运算
3.splitext【1】的用法
4.os.curdir更标准