python 复制文件

python 复制文件,第1张

用Python把某一目录下的文件复制到指定目录中,代码如下:

1、首先插入必要的库:

import os 

import os.path 

import shutil 

import time,  datetime

2、实现复制文件代码如下:

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)

3、主函数的实现:

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"

代码:

import os

import shutil

from shutil import Error

from shutil import copystat

from shutil import copy2

src = "" #需要复制的文件目录

dst = "" #目标目录

def jiecptree(src, dst, symlinks=False, ignore=None): #声明函数 copyree( 要复制的目录,目标目录,复制符号连接内容到新目录,没有要忽略文件)

names = os.listdir(src) #获得要复制目录的文件名列表,赋给变量 names

if ignore is not None:#如果 ignore 不是None值

ignored_names = ignore(src, names) # src目录中要忽略文件的名字赋给 ignored_names

else: # 否则

ignored_names = set() #ignore_name 被 不重复空元素集 赋值

if os.path.isdir(dst):

pass

else:

os.makedirs(dst)

# print"dstfirst:"+dst

errors = [] #声明 errors列

for name in names: #将names里的元素循环复制给name

if name in ignored_names: #如果name在要求被忽略的列里出现

continue#继续for循环(跳回for,从新循环下个元素)

srcname = os.path.join(src, name) #将路径名(src)添加到文名(name)之前然后赋值给 srcname

dstname = os.path.join(dst, name) #将路径名(dst)添加到文名(name)之前然后赋值给 dstcname

from shutil import Error

# print "name:"+name

# print "src:"+src

# print "dst:"+dst

try:#尝试

if os.path.islink(srcname):

continue

elif os.path.isdir(srcname):#如果srcname路径是存在

jiecptree(srcname, dstname, symlinks, ignore)

elif os.path.isdir(dstname):

os.remove(dstname)

copy2(srcname, dstname)

else: # 否则

copy2(srcname, dstname) # 复制srcname到dstname

# print "srcname:"+srcname

# print "dstname:"+dstname

# XXX What about devices, sockets etc.? #怎样装置

except (IOError, os.error), why:#除(IOError[与文件有关的异常], *** 作系统异常)外,返回原因

errors.append((srcname, dstname, str(why))) # 向errors列里添加,(要复制的目录,目标目录,错误原因)

# catch the Error from the recursive jiecptree so that we can 从递归复制中捕捉这个错误,以便于我们能继续复制其他文件

# continue with other files

except Error, err: #除错误外,返回错误:

errors.extend(err.args[0]) #扩展 errors 列,添加(err.args[0] 元素)

try:#尝试

copystat(src, dst) # 从src复制权限位,上次访问时间,最后修改时间 到 dst,

except WindowsError:# 除 Windows错误 外:

# can't copy file access times on Windows 在Windows上无法复制文件访问时间

pass# 通过(不作任何处理)

except OSError, why:# 除 *** 作系统错误 外,返回原因:

errors.extend((src, dst, str(why))) #扩展 errors 列,添加(要复制的目录,目标目录,错误原因)

if errors: # 如果错误

raise Error(errors) # 提示错误

更多相关内容可参考资料http://www.viiboo.cn

模块shutil可以完成对文件的复制与删除 *** 作:

#从源src复制到dst中去

copyfile(src,dst)示例1,文件拷贝:

import shutil

#将d盘下的123.txt文件复制到d盘下test目录中,并重命名为234.txt

shutil.copyfile('d://123.txt','D://test//234.txt')示例2,递归拷贝文件夹:

import shutil

#复制old_path中的目录到new_path

old_path = 'D://123'

new_path = 'd://test//123'

shutil.copytree(old_path,new_path)http://www.cnblogs.com/aslongas/p/6926000.html


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12069289.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存