2011-04-18 python 文件copy 之道 大全 (转)
来源:互联网 发布:tomcat 80端口打不开 编辑:程序博客网 时间:2024/06/03 20:57
不知道在什么时候看到个好帖,觉得好就移过来了,学习学习。。。
1. os.system
- Python code
- import osimport tempfilefilename1 = tempfile.mktemp (".txt") #产生临时文件或目录,tempfile.mktemp(suffix='',prefix='tmp',dir=None) 产生的文件名或目录,默认就是函数里的参数。
- open (filename1, "w").close ()filename2 = filename1 + ".copy"print filename1, "=>", filename2#拷文件os.system ("copy %s %s" % (filename1, filename2))if os.path.isfile (filename2): print "Success"dirname1 = tempfile.mktemp (".dir")os.mkdir (dirname1)dirname2 = dirname1 + ".copy"print dirname1, "=>", dirname2#拷目录os.system ("xcopy /s %s %s" % (dirname1, dirname2)) #DOS下,拷贝目录命令xcopyif os.path.isdir (dirname2): print "Success"
- 2. shutil.copy和shutil.copytree
- Python code
- import osimport shutilimport tempfilefilename1 = tempfile.mktemp (".txt")open (filename1, "w").close ()filename2 = filename1 + ".copy"print filename1, "=>", filename2#拷文件shutil.copy (filename1, filename2)if os.path.isfile (filename2): print "Success"dirname1 = tempfile.mktemp (".dir")os.mkdir (dirname1)dirname2 = dirname1 + ".copy"print dirname1, "=>", dirname2#拷目录shutil.copytree (dirname1, dirname2)if os.path.isdir (dirname2): print "Success"
3. win32file.CopyFile
- Python code
- import osimport win32fileimport tempfilefilename1 = tempfile.mktemp (".txt")open (filename1, "w").close ()filename2 = filename1 + ".copy"print filename1, "=>", filename2#拷文件#文件已存在时,1为不覆盖,0为覆盖win32file.CopyFile (filename1, filename2, 1)win32file.CopyFile (filename1, filename2, 0)win32file.CopyFile (filename1, filename2, 1)if os.path.isfile (filename2): print "Success"dirname1 = tempfile.mktemp (".dir")os.mkdir (dirname1)dirname2 = dirname1 + ".copy"print dirname1, "=>", dirname2#拷目录win32file.CopyFile (dirname1, dirname2, 1)if os.path.isdir (dirname2): print "Success"
4. SHFileOperation
- Python code
- import osfrom win32com.shell import shell, shellconimport tempfilefilename1 = tempfile.mktemp (".txt")open (filename1, "w").close ()filename2 = filename1 + ".copy"print filename1, "=>", filename2#拷文件#文件已存在时,shellcon.FOF_RENAMEONCOLLISION会指示重命名文件shell.SHFileOperation ( (0, shellcon.FO_COPY, filename1, filename2, 0, None, None))shell.SHFileOperation ( (0, shellcon.FO_COPY, filename1, filename2, shellcon.FOF_RENAMEONCOLLISION, None, None))shell.SHFileOperation ( (0, shellcon.FO_COPY, filename1, filename2, 0, None, None))if os.path.isfile (filename2): print "Success"dirname1 = tempfile.mktemp (".dir")os.mkdir (dirname1)dirname2 = dirname1 + ".copy"print dirname1, "=>", dirname2#拷目录shell.SHFileOperation ( (0, shellcon.FO_COPY, dirname1, dirname2, 0, None, None))if os.path.isdir (dirname2): print "Success"
测试结果出来了:
测试环境:系统——Win7 RTM,CPU——P4 3.0,MEM——1.5G DDR400,U盘——Kingston 4G
用4种不同的方法从硬盘拷贝MSDN 2008 SP1(2.37G)到U盘:
os System 的方法耗时903.218秒
shutil 的方法耗时1850.634秒
win32file 的方法耗时861.438秒
SHFileOperation的方法耗时794.023秒
另外SHFileOperation是显示对话框的,可以这样用SHFileOperation能操作网络上的文件
如果你想将本地文件复制到192.168.1.99
那么只要在192.168.1.99上共享123目录
然后将pTo设置为http://www.cnblogs.com/lovemo1314/admin/file://192.168.1.99/123
就可以了
但不要设置为http://www.cnblogs.com/lovemo1314/admin/file://192.168.1.99/
- Python code
shell.SHFileOperation (
(0, shellcon.FO_COPY, filename1, filename2,
shellcon.FOF_RENAMEONCOLLISION |
/ shellcon.FOF_NOCONFIRMATION |/
shellcon.FOF_NOERRORUI | /
shellcon.FOF_SILENT, None, None))
FOF_SILENT //不产生正在复制的对话框
FOF_NOCONFIRMMKDIR//如果目的目录不存在,就默认创建
FOF_NOCONFIRMATION //不出现确认文件替换对话框(Confirmation Dialog)(默认替换原来的文i件)
FOF_NOERRORUI//不出现错误对话框
最好不要同时使用FOF_NOERRORUI,FOF_NOCONFIRMMKDIR,因为FOF_NOCONFIRMMKDIR屏蔽了missing directory Error
但FOF_NOERROR又屏蔽了missing directory Error,那么在同时使用FOF_NOERRORUI,FOF_NOCONFIRMMKDIR
- 2011-04-18 python 文件copy 之道 大全 (转)
- Python 文件操作之Copy
- python 文件异地存储 copy
- Python--shutil--copy--复制文件
- python模块系列之 - copy
- python操作文件大全
- Python 文件操作大全
- python 文件拷贝copy操作 shutill
- Python 文件的Copy and Paste
- 【Python基础】之copy and deepcopy
- python copy()
- Python文件/文件夹操作大全
- 文件Copy
- 文件Copy
- copy文件
- Copy文件
- 文件copy
- copy文件
- 省市地区的二级分类SQL脚本(含数据)
- struts2之使用JSON插件实现Ajax(处理hibernate的POJO类时出现的异常)
- GetModuleFileName 函数
- 为 Internet 口令提供更多的安全性"带来的 web 用户密码修改的问题
- 什么是socket?(转载)
- 2011-04-18 python 文件copy 之道 大全 (转)
- Database Restore and Recovery Procedure: Outline
- uml
- 开发人员的技能和责任心
- FindControl用法
- Eclipse下的Java反编译插件Java Decompiler(JD) Eclipse Plugin的下载与安装
- 打造Emacs成为Python的IDE
- (转)pb+api实际应用
- 分页方案(待完成)