Python应用:分类归档--建立批处理,一次执行Shell调用
wibrst
|
1#
wibrst 发表于 2006-12-20 23:26
Python应用:分类归档--建立批处理,一次执行Shell调用
晚上回来又重新做了一遍,改进主要有这几点:
a.加入了文件类型限定,即pdf和chm文件,因为其他类型文件并不多,并且压缩文件内容还未确定。 b.把要通过命令行的事情集中写入批处理文件,然后只需一次shell调用。并且有明确的记录。 [color="#008080"]# encoding:gb2312 [color="#0000ff"]import [color="#800000"]os [color="#0000ff"]import [color="#800000"]sys [color="#000000"]sPath[color="#000080"]=[color="#800080"]'M:\Python' [color="#000000"]sWorkBat[color="#000080"]=[color="#800080"]'workDirect.bat' [color="#000000"]aWorkExt[color="#000080"]=[color="#000000"][[color="#800080"]'pdf'[color="#000000"],[color="#800080"]'chm'[color="#000000"]] [color="#0000ff"]if not [color="#800000"]os[color="#000080"].[color="#000000"]path[color="#000080"].[color="#ff00ff"]isdir[color="#000000"](sPath): [color="#0000ff"]print [color="#800080"]'Wrong base path' [color="#800000"]sys[color="#000080"].[color="#ff00ff"]exit[color="#000000"]() [color="#800000"]os[color="#000080"].[color="#ff00ff"]chdir[color="#000000"](sPath) [color="#008080"]# 工作目录 [color="#000000"]sCmdBat[color="#000080"]=[color="#800080"]'' [color="#0000ff"]def [color="#000000"]quotePath(_p): [color="#0000ff"]return [color="#800080"]'"'[color="#000080"]+[color="#000000"]_p[color="#000080"]+[color="#800080"]'"' [color="#0000ff"]def [color="#000000"]checkInclude(_e,_l): [color="#0000ff"]for [color="#000000"]e [color="#0000ff"]in [color="#000000"]_l: [color="#0000ff"]if [color="#000000"]e[color="#000080"]==[color="#000000"]_e: [color="#0000ff"]return [color="#000000"]True [color="#0000ff"]return [color="#000000"]False [color="#0000ff"]for [color="#ff00ff"]f [color="#0000ff"]in [color="#800000"]os[color="#000080"].[color="#ff00ff"]listdir[color="#000000"](sPath): [color="#0000ff"]if [color="#800000"]os[color="#000080"].[color="#000000"]path[color="#000080"].[color="#ff00ff"]isfile[color="#000000"]([color="#ff00ff"]f[color="#000000"]): [color="#008080"]# 只处理文件 [color="#000000"]iEx[color="#000080"]=[color="#ff00ff"]f[color="#000080"].[color="#ff00ff"]rfind[color="#000000"]([color="#800080"]'.'[color="#000000"]) [color="#008080"]# 取得扩展名前索引 [color="#0000ff"]if [color="#000000"]iEx: [color="#000000"]sEx[color="#000080"]=[color="#ff00ff"]f[color="#000000"][iEx[color="#000080"]+[color="#000000"]1:][color="#000080"].[color="#ff00ff"]lower[color="#000000"]() [color="#008080"]# 得出扩展名 [color="#0000ff"]if [color="#000000"]checkInclude(sEx,aWorkExt): [color="#000000"]sDir[color="#000080"]=[color="#800080"]'Book_'[color="#000080"]+[color="#000000"]sEx [color="#008080"]# 目标分类目录 [color="#0000ff"]if not [color="#800000"]os[color="#000080"].[color="#000000"]path[color="#000080"].[color="#ff00ff"]exists[color="#000000"](sDir) [color="#0000ff"]or not [color="#800000"]os[color="#000080"].[color="#000000"]path[color="#000080"].[color="#ff00ff"]isdir[color="#000000"](sDir): [color="#008080"]# 确保目录存在 [color="#800000"]os[color="#000080"].[color="#ff00ff"]mkdir[color="#000000"](sDir) [color="#000000"]sCmd[color="#000080"]=[color="#800080"]' '[color="#000080"].[color="#ff00ff"]join[color="#000000"]([[color="#800080"]'move'[color="#000000"],quotePath([color="#ff00ff"]f[color="#000000"]),sDir]) [color="#000000"]sCmdBat[color="#000080"]+=[color="#000000"]sCmd[color="#000080"]+[color="#800080"]'\n' [color="#008080"]# 准备并写入批处理文件并 [color="#000000"]fBat[color="#000080"]=[color="#ff00ff"]file[color="#000000"](sWorkBat,[color="#800080"]'w'[color="#000000"])[color="#008080"] [color="#000000"]f[color="#000000"]Bat[color="#000080"].[color="#ff00ff"]write[color="#000000"](sCmdBat) [color="#000000"]f[color="#000000"]Bat[color="#000080"].[color="#ff00ff"]close[color="#000000"]() [color="#008080"]# 执行批处理 [color="#800000"]os[color="#000080"].[color="#ff00ff"]system[color="#000000"](sWorkBat) |