python 如何将一个目录下的所有文件和目录拷贝到另一个目录下?
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
- liweijie
- 帖子: 4
- 注册时间: 2009-09-13 15:33
python 如何将一个目录下的所有文件和目录拷贝到另一个目录下?
python 如何将一个目录下的所有文件和目录拷贝到另一个目录下?
- O_O_BOT
- 帖子: 2461
- 注册时间: 2009-05-20 19:32
Re: python 如何将一个目录下的所有文件和目录拷贝到另一个目录下?
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
[url]irc://irc.freenode.net/ubuntu-cn[/url]
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录
http://webchat.freenode.net/?channels=ubuntu-cn
[url]irc://irc.freenode.net/ubuntu-cn[/url]
- liweijie
- 帖子: 4
- 注册时间: 2009-09-13 15:33
python 如何将一个目录下的所有文件和目录拷贝到另一个目录下?
python 如何将一个目录下的所有文件和目录拷贝到另一个目录下?
- mickeywaley
- 帖子: 1427
- 注册时间: 2009-03-19 9:19
- 系统: ubuntu
- 来自: 江苏
- 联系:
Re: python 如何将一个目录下的所有文件和目录拷贝到另一个目录下?
- blog:http://lizhenglin.com备份的,原站加www.
- OS:ubuntu:9.04
- Google Talk:mickeywaley#gmail.com
- Twitter:@mickeywaley
- Google Voice:1-520-226-8130
- Ubuntu 9.10 (Karmic Koala) 安装配置相关教程 http://docs.google.com/View?id=ddqsjgzx_747f25h8pcb
- peachcolor
- 帖子: 898
- 注册时间: 2006-05-20 14:03
Re: python 如何将一个目录下的所有文件和目录拷贝到另一个目录下?
代码: 全选
# 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))
- liweijie
- 帖子: 4
- 注册时间: 2009-09-13 15:33
Re: python 将一个目录下的所有文件和目录拷贝到另一个目录下,如果已经存在就覆盖原来的文件。对符号连接文件会不复制.
为了让后来的兄弟不再挨憋,我把代码贴出来,可以直接用。
对于符号链接的处理是忽略(符号链接和它指向的文件都不被复制)
对于符号链接的处理是忽略(符号链接和它指向的文件都不被复制)
代码: 全选
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) # 提示错误
- roylez
- 帖子: 1928
- 注册时间: 2005-10-04 10:59
- 来自: 上海
Re: python 如何将一个目录下的所有文件和目录拷贝到另一个目录下?
代码: 全选
import shutil
shutil.copytree(src, dst)
✡ 弄个dropbox空间来备份文件或者做私人代码服务器?
✡ 配置:[url]git://github.com/roylez/dotfiles.git[/url]
✡ 主页:http://roylez.heroku.com
✡ 各种稀奇玩意儿:http://dooloo.info
✡ 配置:[url]git://github.com/roylez/dotfiles.git[/url]
✡ 主页:http://roylez.heroku.com
✡ 各种稀奇玩意儿:http://dooloo.info
- liweijie
- 帖子: 4
- 注册时间: 2009-09-13 15:33
Re: python 如何将一个目录下的所有文件和目录拷贝到另一个目录下?
如果目标文件目录已经存在,这个是不能用的,它不支持覆盖。roylez 写了:代码: 全选
import shutil shutil.copytree(src, dst)
并且对符号链接处理不好。如果symlinks=True,会复制符号链接和符号链链接指向的文件.
symlinks = False 或不设置symlinks 它将复制符号链接指向的原文件并且还使符号连接文件失效(在符号链接内载入了原被指向文件的内容)。