Alex He

...永远保持希望与激情...约会未来更强大的自己...

 

批量复制文件工具[Python]

刚下了一本书的实例代码,我想把它们拷贝到Eclipse下的指定包里面去,但是发现每个.java文件都放在一个小文件夹里面的。本来是在是用Dos命令cp *.java 复制过去。但是不知道为什么我这的DOS命令总是出错。我怀疑是安装了Cygwin,并把、Cygwin当道path里面排到DOS命令前面了,所以就按照Cygwin运行了,而我按照Dos中cp命令的格式在Cygwin可能是不对的!

所以弄了几下老出问题就火了,还不如自己弄一个!反正python写起来也快!

所以就有了下面这个东西!

还很粗糙,不过最起码能满足我的要求!

#-*- coding:utf8 -*-
'''
Created on 2011-11-23
@author: heshizhu
'''
import os
import sys
import re
def Move_Files(srcDir,pattern,desDir,rmode=False):
    """
        移动指定源目录下的文件到目标目录下,移动的文件名满足pattern给定的模式
        rmode表示是否需要迭代寻找该目录下的所有子目录,rmode=True表示寻找子目录,rmode=False表示不寻找子目录
        如:
        srcDir:C:\\temp\\code\\
        pattern:java
        desDir:C:\\java\\        
    """    
    fileList=Load_Files(srcDir,rmode)
    filteredFileList=Filter_File(fileList,pattern)
    Store_To_File(filteredFileList,desDir)


def Store_To_File(fileList,desDir):
    for file in fileList:
        fr=open(file,'r')
        fw=open(os.path.join(desDir,os.path.basename(file)),'w')
        fw.writelines(fr.readlines())
        fw.close()
        fr.close()

def Filter_File(fileList,pattern):
    list=[]
    for file in fileList:
        filename=os.path.basename(file)
        if filename.find(pattern)!=-1:#这里我没有使用正则,直接使用字符串匹配
            list.append(file) 
    return list
         
def Load_Files(srcDir,rmode):
    list=Load_File_Full(srcDir) if rmode else Load_File_Partly(srcDir)
    return list
    
def Load_File_Partly(path):
    return os.listdir(path)

def Load_File_Full(path):
    list=[]
    for root,dirs,files in os.walk(path):
        for filespath in files:
            list.append(os.path.join(root,filespath))
    return list
      
src=sys.argv[1]
pattern=sys.argv[2]
des=sys.argv[3]
Move_Files(src,pattern,des,True)
    

if __name__=="__main__":
    src="D:\\tmp\\java-puzzlers\\puzzlers-with-character\\"
    pattern="java"
    des="D:\\tmp\\java-puzzlers\\puzzlers-with-character\\"
    Move_Files(src,pattern,des,True)
    pass

 

后记:其实我知道啦!实现这样的功能有很多现成的东西可以!就是Windows下也还有一个powershell,linux/unix下就更多了!不管了,写了就写了吧!记下来先!

posted on 2011-11-23 17:02  Alex木头  阅读(583)  评论(0编辑  收藏  举报

导航