合并百度影音的离线数据 with python 第二版 基于yield
生活随笔
收集整理的這篇文章主要介紹了
合并百度影音的离线数据 with python 第二版 基于yield
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
重新整理了一下代碼。
增加了bdv,mkv的處理流程。
目前暫時支持windows平臺。
bdv,mkv,rmvb的不同處理流程
# -*- coding: UTF-8 -*-import os import io import sys import string import shutil import codecsdef read_bdv_index(filename): piece_list= list() objFile = codecs.open(filename,'r','utf-8') for line in objFile:if(line[0:4] != 'file'):continue;strings = string.split(line,'/')tarfile = strings[len(strings)-1] tempText = string.strip(tarfile)piece_list.append(tempText)objFile.close() return ('avi',piece_list) def read_bdv_file(filename):piece_list= list()piece_list.append('*.bdv_*')return ('avi',piece_list)def read_rmvb_file(filename):piece_list= list()piece_list.append('*.rmvb_*')return ('rmvb',piece_list)def read_mkv_file(filename):piece_list= list() piece_list.append('*.mkv_*')return ('mkv',piece_list)執行代碼:
# -*- coding: UTF-8 -*-import os import io import codecs import string import shutil import moviefmtdef coroutine(func):def start(*args,**kwargs):g = func(*args,**kwargs)g.next()return greturn start@coroutine def enum_movie_file(target): selectedFolder = (yield)for fileitem in os.listdir(selectedFolder): targetFO = os.path.join(selectedFolder,fileitem) if(os.path.isfile(targetFO) == True):continue; target.send(targetFO) @coroutine def read_movie_file(funcDisp,target):while(True):filmFolder = (yield)for fileitem in os.listdir(filmFolder): targetfile = os.path.join(filmFolder,fileitem) if(os.path.isfile(targetfile) == False):continue;filebasename , fext = os.path.splitext(fileitem); if(funcDisp.has_key(string.lower(fext))):pfn = funcDisp[string.lower(fext)];outputs = filmFolder,filebasename, pfn(targetfile);target.send(outputs)break@coroutine def create_report(outputfile):objTar = codecs.open(outputfile,"w+") while(1):filmFolder,filebasename,(extname,piece_list) = (yield)if(extname == None) : break;objTar.write('cd \"%s\"\r\n' % filmFolder) objTar.write('copy /b ') if(len(piece_list) == 1):objTar.write('%s ' %(piece_list[0].encode('gbk'))) else: bFirst = Truefor line in piece_list:if(bFirst == False):objTar.write('+%s' %(line.encode('gbk'))) else:objTar.write('%s' %(line.encode('gbk'))) bFirst = FalseobjTar.write(' ..\%s.%s\r\n' %(filebasename,extname)) objTar.write('cd ..\r\n')objTar.close() if __name__ == '__main__': funcDisp = dict()funcDisp['.bdv_0000']= moviefmt.read_bdv_file;funcDisp['.rmvb_0000']= moviefmt.read_rmvb_file;funcDisp['.mkv_0000']= moviefmt.read_mkv_file;funcDisp['.bdv']= moviefmt.read_bdv_index; try:rmf = enum_movie_file(read_movie_file(funcDisp,create_report('film.bat')))rmf.send(os.getcwd())rmf.close()except Exception as exc: print("%s" % exc); print("done");
?
轉載于:https://www.cnblogs.com/febwave/p/3161801.html
總結
以上是生活随笔為你收集整理的合并百度影音的离线数据 with python 第二版 基于yield的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Sencha Architect 2 的
- 下一篇: 楼天成夺Facebook黑客杯季军,已被