Python实践:分类归档--按扩展名移动文件到子文件夹
[color="#008080"]# sortAndMoveArchive.py
[color="#008080"]# encoding:gb2312
[color="#008080"]# 在电骡下载目录程序分类中,将所有文件(不包含子文件夹及其中)按扩展名分别移动到
[color="#008080"]# 形如'archive_'+sEx的文件夹中
[color="#008080"]# 如果没有则先建立
[color="#0000ff"]import [color="#800000"]os
[color="#000000"]sFrom[color="#00c600"]=[color="#ff00ff"]'E:\eMule\Incoming\程序_'
[color="#800000"]os[color="#00c600"].[color="#808000"]chdir[color="#000000"](sFrom) [color="#008080"]# 定位工作目录
[color="#0000ff"]def [color="#000000"]quotePath(sPath): [color="#008080"]# 引号路径,考虑到包含空格的情况
[color="#0000ff"]return [color="#ff00ff"]'"'[color="#00c600"]+[color="#000000"]sPath[color="#00c600"]+[color="#ff00ff"]'"'
[color="#0000ff"]for [color="#808000"]f [color="#0000ff"]in [color="#800000"]os[color="#00c600"].[color="#808000"]listdir[color="#000000"](sFrom):
[color="#0000ff"]if [color="#800000"]os[color="#00c600"].[color="#000000"]path[color="#00c600"].[color="#808000"]isfile[color="#000000"]([color="#808000"]f[color="#000000"]): [color="#008080"]# 只对文件操作
[color="#000000"]sEx[color="#00c600"]=[color="#800000"]os[color="#00c600"].[color="#000000"]path[color="#00c600"].[color="#808000"]splitext[color="#000000"]([color="#808000"]f[color="#000000"])[1][1:] [color="#008080"]# 取出扩展名
[color="#0000ff"]if [color="#808000"]len[color="#000000"](sEx)[color="#00c600"]>[color="#000000"]1: [color="#008080"]# 有扩展名
[color="#008080"]# 检查归档目录并确保其存在
[color="#000000"]sArcPath[color="#00c600"]=[color="#ff00ff"]'archive_'[color="#00c600"]+[color="#000000"]sEx
[color="#0000ff"]if [color="#000000"](([color="#0000ff"]not [color="#800000"]os[color="#00c600"].[color="#000000"]path[color="#00c600"].[color="#808000"]exists[color="#000000"](sArcPath)) [color="#0000ff"]or [color="#000000"]([color="#0000ff"]not [color="#800000"]os[color="#00c600"].[color="#000000"]path[color="#00c600"].[color="#808000"]isdir[color="#000000"](sArcPath))):
[color="#008080"]# 如果存在还建则会WindowsError: [Error 17] : 'archive_rar'
[color="#008080"]# 移动到对应文件夹
[color="#800000"]os[color="#00c600"].[color="#808000"]mkdir[color="#000000"](sArcPath)
[color="#008080"]# 准备并执行Shell移动命令
[color="#000000"]sCmd[color="#00c600"]=[color="#ff00ff"]' '[color="#00c600"].[color="#808000"]join[color="#000000"]([[color="#ff00ff"]'move'[color="#000000"],quotePath([color="#808000"]f[color="#000000"]),quotePath(sArcPath[color="#00c600"]+[color="#800000"]os[color="#00c600"].[color="#000000"]sep)])
[color="#0000ff"]print [color="#000000"]sCmd
[color="#0000ff"]if [color="#800000"]os[color="#00c600"].[color="#808000"]system[color="#000000"](sCmd)[color="#00c600"]==[color="#000000"]0:
[color="#0000ff"]print [color="#ff00ff"]'successful'