博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2011-04-18 python 文件copy 之道 大全 (转)
阅读量:5772 次
发布时间:2019-06-18

本文共 3509 字,大约阅读时间需要 11 分钟。

不知道在什么时候看到个好帖,觉得好就移过来了,学习学习。。。

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 os import shutil import tempfile filename1 = 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设置为
就可以了
但不要设置为


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

转载地址:http://hmaux.baihongyu.com/

你可能感兴趣的文章
Java程序员达到高薪架构师的一套完美总结(涨薪必看)
查看>>
C# fmpeg加虹软的人脸识别demo
查看>>
Spring AOP 切面编程记录日志和接口执行时间
查看>>
线下实体店应用小程序,实现收益翻倍
查看>>
JavaScript闭包原理与用法实例
查看>>
hadoop运行java类
查看>>
Debian下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日
查看>>
hadoop 网站日志分析
查看>>
最长回文串-我的算法
查看>>
Docker:启动Redis镜像
查看>>
16进制对应颜色代码
查看>>
Openfire 环境搭建
查看>>
纯Html+Ajax和JSP两者的优缺点
查看>>
深入探究Linux内核篇--硬件设备管理
查看>>
php 注册事件
查看>>
NAT的介绍
查看>>
编译Hadoop1.0.2历程和解决问题记录
查看>>
缓存穿透 缓存失效 缓存并发
查看>>
storyboard 总结
查看>>
SpringBoot ——kafka消费多个不同服务器地址消息解决方案
查看>>