Python 中的几种copy用法「建议收藏」

Python 中的几种copy用法「建议收藏」不知道在什么时候看到个好帖,觉得好就移过来了,学习学习。。。1.os.systemPythoncodePythoncode3.win32file.CopyFilePythoncodeP

大家好,又见面了,我是你们的朋友全栈君。

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

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设置为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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155984.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 亚马逊专用主机相关问题「建议收藏」

    亚马逊专用主机相关问题

    2022年2月18日
    41
  • NPS净推荐值 客户忠诚度指标

    NPS净推荐值 客户忠诚度指标净推荐值编辑同义词NPS(净推荐值)一般指净推荐值NPS(NetPromoterScore),净推荐值,又称净促进者得分,亦可称口碑,是一种计量某个客户将会向其他人推荐某个企业或服务可能性的指数。它是最流行的顾客忠诚度分析指标,专注于顾客口碑如何影响企业成长。通过密切跟踪净推荐值,企业可以让自己更加成功。净推荐值最早是由贝恩咨询公司客户忠诚度业务的创始人弗雷德里克·…

    2022年6月11日
    41
  • k8s pod 状态 Evicted[通俗易懂]

    k8s pod 状态 Evicted[通俗易懂]删除Evicted状态的pod[root@hadoop03kubernetes]#kubectlgetpods|grepEvicted|awk'{print$1}’|xargskubectldeletepodpod”glusterfs-2p28b”deleted[root@hadoop03kubernetes]#kubectldescribepodglusterfs-cpft7Name:glusterfs-cpft7N.

    2022年5月13日
    81
  • C语言经典面试题_c语言常见面试题

    C语言经典面试题_c语言常见面试题100道c语言面试题2018年01月12日18:52:35cocos+unity+服务器阅读数:9166https://blog.csdn.net/themagickeyjianan/article/details/79047242题目来源:1、中兴、华为、慧通、英华达、微软亚洲技术中心等中外企业面试题目;2、C语言面试宝典(林锐《高质量编程第三版》)。说明:1、部…

    2022年8月28日
    0
  • Glassfish4.1安装及配置[通俗易懂]

    Glassfish4.1安装及配置[通俗易懂]安装及配置下载及安装详情见官网。关于文档上述下载的GlassFish为开源版本,文档见GlassFishServerDocumentation。不过,在使用中发现该文档的参数并不全,比如,ReferenceManual中提供了命令create-auth-realm用来手动创建realm,现在要设定realm所在的domain,却没有找到相应的参数。反倒是在GlassFish商业版SunG

    2022年8月20日
    2
  • CentOS镜像下载&安装配置&Linux常用命令[通俗易懂]

    CentOS镜像下载&安装配置&Linux常用命令[通俗易懂]目录1.linuxcentos7镜像下载2.创建虚拟机3.正式安装CentOS74.远程工具Xshell的使用5.更换国内源6.运行yum命令出现“Existinglock/var/run/yum.pid:anothercopyisrunningaspid…”解决方法​7.Linux常用命令1.linuxcentos7镜像下载下载地址:http://mirrors.aliyun.com/centos/7/isos/x8…

    2022年5月9日
    95

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号