Python中的几种copy用法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Python中的⼏种copy⽤法不知道在什么时候看到个好帖,觉得好就移过来了,学习学习。

1. os.system
Python code
import os
import tempfile
filename1 = 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下,拷贝⽬录命令xcopy
if 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 os
import win32file
import tempfile
filename1 = 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 os
from win32com.shell import shell, shellcon
import tempfile
filename1 = 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。

相关文档
最新文档