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年7月1日
    23
  • iostat 命令详解「建议收藏」

    iostat 命令详解「建议收藏」概述iostat主要用于输出磁盘IO和CPU的统计信息。iostat属于sysstat软件包。可以用yuminstallsysstat直接安装。iostat用法用法:iostat[选项][<时间间隔>][<次数>]如下图:iostat用法命令参数:-c:显示CPU使用情况-d:显示磁盘使用情况-N:显示磁盘阵列(LVM)信息-n:显示NFS使用情况-k:以KB为单位显示-m:以M为单位显示-t.

    2022年10月6日
    6
  • linux 主机支持远程唤醒_LINUX 远程开机

    linux 主机支持远程唤醒_LINUX 远程开机linux远程开机1、主机bios设置支持lan启动2、查看机器是否支持服务器远程唤醒ethtooleth0Settingsforeth0:Supportedports:[TPMII]Supportedlinkmodes:10baseT/Half10baseT/Full100baseT/Half100baseT/FullSupportsauto-negotiat…

    2022年6月2日
    39
  • SIGINT信号

    SIGINT信号原文链接 http hi baidu com l1l1888 blog item 9024a2fe75c6 html 用户按下 ctrl c 时 进程被中断 catch 被执行 中断处理函数处理完毕 root localhost001 catsigint demo cpp include include includeusing st

    2025年7月15日
    4
  • 一个简单的Python暴力激活成功教程网站登录密码脚本「建议收藏」

    一个简单的Python暴力激活成功教程网站登录密码脚本「建议收藏」使用Python的Request库的get()方法来发送http请求,利用Python脚本循环遍历字典来进行暴力激活成功教程

    2022年8月22日
    7
  • 完全干净卸载mysql教程

    完全干净卸载mysql教程引言很多人因为第一次安装mysql导致安装错误,或者安装的数据库版本太高,比如mysql8.0版本,出现了很多问题,导致数据库无法使用,或者一些图形界面无法操作,想要卸载,重装稳定的mysql数据库,却是一件麻烦的事情,接下来教大家如何卸载有问题的mysq版本不限l,希望帮到大家,分为五步!个人微信公众号:源码客栈感兴趣可以关注下,更多视频资料教程!第一步卸载Mysql相关的应用程序打开控制面板-》找到程序和功能,看到所有和mysql相关的应用程序,右击卸载掉,有些人可能有workbench

    2022年6月16日
    34

发表回复

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

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