posts - 116,  comments - 123,  trackbacks - 0

1. os.system

import os
import tempfile

filename1
= tempfile.mktemp (".txt")
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))

if os.path.isdir (dirname2): print "Success"

2. shutil.copy和shutil.copytree

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

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 

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"
不知道有没有其它的了,os.rename不算,那个是移动文件。另外我在测试它们的性能如何。
http://timgolden.me.uk/python/win32_how_do_i/copy-a-file.html
这里和楼主列出的都一样,没有更多的了
或者使用Chilkat http://www.chilkatsoft.com/refdoc/pythonCkFileAccessRef.html

测试结果出来了:
测试环境:系统——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是显示对话框的,可以这样用
shell.SHFileOperation (
(0, shellcon.FO_COPY, filename1, filename2,
shellcon.FOF_RENAMEONCOLLISION
| \
shellcon.FOF_NOCONFIRMATION
|\
shellcon.FOF_NOERRORUI
| \
shellcon.FOF_SILENT, None, None)
)
posted on 2014-08-14 15:14 yuhen 阅读(581) 评论(0)  编辑 收藏 引用 所属分类: 技术文档
只有注册用户登录后才能发表评论。
<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

Believe in who you are,
you are a shinning star!

常用链接

留言簿(16)

随笔分类(122)

随笔档案(116)

文章分类(2)

文章档案(2)

相册

BLOG

Study

Testing

最新随笔

搜索

  •  

积分与排名

  • 积分 - 120001
  • 排名 - 54

最新随笔

最新评论

阅读排行榜

评论排行榜