Python实现文件复制删除

时间:2022-01-02 19:37:00

 用python实现了一个小型的工具。其实只是简单地把debug 目录下的配置文件复制到指定目录,把Release下的生成文件复制到同一指定,过滤掉不需要的文件夹(.svn),然后再往这个指定目录添加几个特定的文件。

    这个是我的第一个python小程序。

    下面就来看其代码的实现。

首先插入必要的库:

?
1
2
3
4
import os
import os.path
import shutil
import time, datetime

然后就是一大堆功能函数。第一个就是把某一目录下的所有文件复制到指定目录中:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def copyFiles(sourceDir, targetDir):
if sourceDir.find(".svn") >0:
return
for file in os.listdir(sourceDir):
sourceFile = os.path.join(sourceDir, file)
targetFile = os.path.join(targetDir, file)
if os.path.isfile(sourceFile):
if not os.path.exists(targetDir):
os.makedirs(targetDir)
 if not os.path.exists(targetFile) or(os.path.exists(targetFile) and (os.path.getsize(targetFile) != os.path.getsize(sourceFile))):
 open(targetFile, "wb").write(open(sourceFile, "rb").read())
 if os.path.isdir(sourceFile):
 First_Directory = False
 copyFiles(sourceFile, targetFile)

删除一级目录下的所有文件:

?
1
2
3
4
5
def removeFileInFirstDir(targetDir):
for file in os.listdir(targetDir):
targetFile = os.path.join(targetDir, file)
if os.path.isfile(targetFile):
os.remove(targetFile)

复制一级目录下的所有文件到指定目录:

?
1
2
3
4
5
6
7
def coverFiles(sourceDir, targetDir):
for file in os.listdir(sourceDir):
sourceFile = os.path.join(sourceDir, file)
targetFile = os.path.join(targetDir, file)
#cover the files
if os.path.isfile(sourceFile):
open(targetFile, "wb").write(open(sourceFile, "rb").read())

复制指定文件到目录:

def moveFileto(sourceDir, targetDir):
shutil.copy(sourceDir, targetDir)

往指定目录写文本文件:

?
1
2
def writeVersionInfo(targetDir):
open(targetDir, "wb").write("Revison:")

返回当前的日期,以便在创建指定目录的时候用:

?
1
2
3
4
5
6
7
8
9
10
def getCurTime():
nowTime = time.localtime()
year = str(nowTime.tm_year)
month = str(nowTime.tm_mon)
if len(month) <2:
month ='0'+ month
day = str(nowTime.tm_yday)
if len(day) <2:
day ='0'+ day
 return (year +'-'+ month +'-'+ day)

然后就是主函数的实现了:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if __name__ =="__main__":
print "Start(S) or Quilt(Q) \n"
flag = True
while (flag):
answer = raw_input()
if'Q'== answer:
flag = False
elif 'S'== answer :
formatTime = getCurTime()
 targetFoldername ="Build "+ formatTime +"-01"
 Target_File_Path += targetFoldername
 
 copyFiles(Debug_File_Path, Target_File_Path)
 removeFileInFirstDir(Target_File_Path)
 coverFiles(Release_File_Path, Target_File_Path)
 moveFileto(Firebird_File_Path, Target_File_Path)
 moveFileto(AssistantGui_File_Path, Target_File_Path)
 writeVersionInfo(Target_File_Path+"\\ReadMe.txt")
 print "all sucess"
 else:
 print "not the correct command"

    感觉是果然简单, 不过简单的原因是因为库函数丰富,语言基本特性的简单真没感觉出来。

我们再来看一个实例

本人一直用foobar2000作为音乐播放器,听歌时候把自己喜欢的歌都会特别添加到一个播放列表。

自己用iphone,同步歌曲的时候需要用到itunes,而itunes却没有我用foobar2000的精选播放列表呢~

本人只好定期把播放列表的mp3文件拷贝到一个目录,我用itunes只需同步这个目录即可
(顺便吐槽下itunes不好使,在后期我都直接用其他同步工具代替之)

播放列表是*.m3u格式的文本,用记事本打开可以看到mp3的绝对路径。

直接贴代码吧,写得比较仓促,各位将就参考下即可:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#coding=gbk 
import sys, shutil, os, string
mp3List = "F:\\My Documents\\mp3list\\默认精选.m3u"
destDir = "G:\\POP\\默认精选"
 
def cpFile(srcPath):
  fileName = os.path.basename(srcPath)
  destPath = destDir + os.path.sep + fileName
  if os.path.exists(srcPath) and not os.path.exists(destPath):
    print 'cp %s %s' % (srcPath,destPath)
    shutil.copy(srcPath,destPath)
 
if __name__ == '__main__':
  f = file(mp3List, 'r')
  lists = f.readlines()
  for i in lists:
    cpFile(string.strip(i))
     
  f.close()