当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 8 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : python 如何将一个目录下的所有文件和目录拷贝到另一个目录下?
帖子发表于 : 2009-10-27 15:25 
头像

注册: 2009-09-13 15:33
帖子: 4
送出感谢: 0 次
接收感谢: 0 次
python 如何将一个目录下的所有文件和目录拷贝到另一个目录下?


页首
 用户资料  
 
2 楼 
 文章标题 : Re: python 如何将一个目录下的所有文件和目录拷贝到另一个目录下?
帖子发表于 : 2009-10-27 15:27 
头像

注册: 2009-05-20 19:32
帖子: 2462
送出感谢: 0 次
接收感谢: 2
irc <maonx> say: cp -r ?


_________________
irc 聊天室
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录

http://webchat.freenode.net/?channels=ubuntu-cn
irc://irc.freenode.net/ubuntu-cn


页首
 用户资料  
 
3 楼 
 文章标题 : python 如何将一个目录下的所有文件和目录拷贝到另一个目录下?
帖子发表于 : 2009-10-27 15:27 
头像

注册: 2009-09-13 15:33
帖子: 4
送出感谢: 0 次
接收感谢: 0 次
python 如何将一个目录下的所有文件和目录拷贝到另一个目录下?


页首
 用户资料  
 
4 楼 
 文章标题 : Re: python 如何将一个目录下的所有文件和目录拷贝到另一个目录下?
帖子发表于 : 2009-10-27 15:29 
头像

注册: 2009-03-19 9:19
帖子: 1423
地址: 江苏
送出感谢: 0 次
接收感谢: 2
http://forum.ubuntu.org.cn/viewtopic.php?f=48&t=235084

重复了

自己删除本帖子

http://forum.ubuntu.org.cn/viewtopic.php?f=48&t=235085


_________________


页首
 用户资料  
 
5 楼 
 文章标题 : Re: python 如何将一个目录下的所有文件和目录拷贝到另一个目录下?
帖子发表于 : 2009-10-27 15:31 
头像

注册: 2006-05-20 14:03
帖子: 898
送出感谢: 0 次
接收感谢: 0 次
代码:
# Delete everything reachable from the directory named in "top",
# assuming there are no symbolic links.
# CAUTION:  This is dangerous!  For example, if top == '/', it
# could delete all your disk files.
import os
for root, dirs, files in os.walk(top, topdown=False):
    for name in files:
        os.remove(os.path.join(root, name))
    for name in dirs:
        os.rmdir(os.path.join(root, name))

可参见此例


页首
 用户资料  
 
6 楼 
 文章标题 : Re: python 将一个目录下的所有文件和目录拷贝到另一个目录下,如果已经存在就覆盖原来的文件。对符号连接文件会不复制.
帖子发表于 : 2009-11-05 10:15 
头像

注册: 2009-09-13 15:33
帖子: 4
送出感谢: 0 次
接收感谢: 0 次
为了让后来的兄弟不再挨憋,我把代码贴出来,可以直接用。
对于符号链接的处理是忽略(符号链接和它指向的文件都不被复制)

代码:

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)             # 提示错误



页首
 用户资料  
 
7 楼 
 文章标题 : Re: python 如何将一个目录下的所有文件和目录拷贝到另一个目录下?
帖子发表于 : 2009-11-05 10:37 
头像

注册: 2005-10-04 10:59
帖子: 1928
地址: 上海
送出感谢: 0 次
接收感谢: 1
代码:
import shutil

shutil.copytree(src, dst)


_________________
弄个dropbox空间来备份文件或者做私人代码服务器
配置:git://github.com/roylez/dotfiles.git
主页:http://roylez.heroku.com
各种稀奇玩意儿:http://dooloo.info


页首
 用户资料  
 
8 楼 
 文章标题 : Re: python 如何将一个目录下的所有文件和目录拷贝到另一个目录下?
帖子发表于 : 2009-11-05 10:48 
头像

注册: 2009-09-13 15:33
帖子: 4
送出感谢: 0 次
接收感谢: 0 次
roylez 写道:
代码:
import shutil

shutil.copytree(src, dst)


如果目标文件目录已经存在,这个是不能用的,它不支持覆盖。
并且对符号链接处理不好。如果symlinks=True,会复制符号链接和符号链链接指向的文件.
symlinks = False 或不设置symlinks 它将复制符号链接指向的原文件并且还使符号连接文件失效(在符号链接内载入了原被指向文件的内容)。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 8 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译