Python文件复制

  1. # 写程序实现复制文件的功能
  2. # 要求:
  3. # 1. 源文件路径和目标文件路径需要手动输入
  4. # 2. 要考虑文件关闭的问题
  5. # 3. 要考虑复制超大文件的问题
  6. # 4. 要能复制二进制文件
  7.  
  8. def copy_file():
  9. '''
  10. 此函数实现文件复制功能
  11. source_dir:源文件路径
  12. target_dir:目标文件路径
  13. '''
  14. source_dir = input("请输入源文件路径:")
  15. target_dir = input("请输入目标文件路径:")
  16. try:
  17. f = open(source_dir,'rb')
  18. try:
  19. try:
  20. f2 = open(target_dir,'wb')
  21. # 可能突然断电或者U盘被拔出了
  22. try:
  23. for i in f:
  24. f2.write(i)
  25. f.close()
  26. f2.close()
  27. finally:
  28. f2.close()
  29. except OSError:
  30. print("打开写文件失败")
  31. return False
  32. finally:
  33. f.close()
  34. except OSError:
  35. print("打开读文件失败")
  36. return False
  37.  
  38. copy_file()

 下面的是改良之后的版本,避免过多次数的进行磁盘操作

  1. # 1. 写程序实现复制文件功能:
  2. # 要求:
  3. # 1. 源文件路径和目标文件路径需手动输入
  4. # 2. 要考虑关闭文件问题
  5. # 3. 要考虑复制超大文件问题
  6. # 4. 要能复制二进制文件
  7.  
  8. def mycopy(src_file, dst_file):
  9. """此函数的功以实现复制文件
  10. src_file : 源文件名
  11. dst_file : 目标文件名
  12. """
  13. try:
  14. fr = open(src_file, "rb") # fr读文件
  15. try:
  16. try:
  17. fw = open(dst_file, 'wb') # fw写文件
  18. try:
  19. while True:
  20. data = fr.read(4096)
  21. if not data:
  22. break
  23. fw.write(data)
  24. except:
  25. print("可能U盘被拔出...")
  26. finally:
  27. fw.close() # 关闭写文件
  28. except OSError:
  29. print("打开写文件失败")
  30. return False
  31. finally:
  32. fr.close() # 关闭读文件
  33. except OSError:
  34. print("打开读文件失败")
  35. return False
  36. return True
  37.  
  38. s = input("请输入源文件路径名: ")
  39. d = input("请输入目标文件路径名: ")
  40. if mycopy(s, d):
  41. print("复制文件成功")
  42. else:
  43. print("复制文件失败")

下面是with语句改写后的代码:

  1. # 1. 写程序实现复制文件功能:
  2. # 要求:
  3. # 1. 源文件路径和目标文件路径需手动输入
  4. # 2. 要考虑关闭文件问题
  5. # 3. 要考虑复制超大文件问题
  6. # 4. 要能复制二进制文件
  7.  
  8. def mycopy(src_file, dst_file):
  9. """此函数的功以实现复制文件
  10. src_file : 源文件名
  11. dst_file : 目标文件名
  12. """
  13. try:
  14. with open(src_file, "rb") as fr,open(dst_file, 'wb') as fw: # fr读文件
  15. while True:
  16. data = fr.read(4096)
  17. if not data:
  18. break
  19. fw.write(data)
  20. except OSError:
  21. print("打开读文件失败")
  22. return False
  23. except:
  24. print("可能U盘被拔出...")
  25. return True
  26.  
  27. s = input("请输入源文件路径名: ")
  28. d = input("请输入目标文件路径名: ")
  29. if mycopy(s, d):
  30. print("复制文件成功")
  31. else:
  32. print("复制文件失败")

python第六篇:Python复制超大文件、复制二进制文件的更多相关文章

  1. 解剖SQLSERVER 第十六篇 OrcaMDF RawDatabase --MDF文件的瑞士军刀(译)

    解剖SQLSERVER 第十六篇 OrcaMDF RawDatabase --MDF文件的瑞士军刀(译) http://improve.dk/orcamdf-rawdatabase-a-swiss-a ...

  2. 【Python之路】第六篇--Python基础之模块

    模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

  3. python 历险记(六)— python 对正则表达式的使用(上篇)

    目录 引言 什么是正则表达式? 正则表达式有什么用? 正则表达式的语法及使用实例 正则表达式语法有哪些? 这些正则到底该怎么用? 小结 参考文档 系列文章列表 引言 刚接触正则表达式,我也曾被它们天书 ...

  4. Python开发 第一篇 python的前世今生

    Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...

  5. scp - 安全复制(远程文件复制程序)

    总览 SYNOPSIS scp -words [-pqrvBC1246 ] [-F ssh_config ] [-S program ] [-P port ] [-c cipher ] [-i ide ...

  6. python第六篇文件处理类型

    阅读目录 一 文件操作 二 打开文件的模式 三 操作文件的方法 四 文件内光标移动 五 文件的修改   文件处理                                             ...

  7. Python 第六篇(中):面向对象编程中级篇

    面向对象编程中级篇: 编程思想概述: 面向过程:根据业务逻辑从上到下写垒代码  #最low,淘汰 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 #混口饭吃 def add(ho ...

  8. 使用Python读写文件进行图片复制(文件复制)

    发现Python在读二进制文件时,可以生成一个新的文件,操作还很简单,如下:对一个jpeg的文件进行复制 fp1=open("e:\\1.jpeg","rb") ...

  9. 第十六篇 Python之迭代器与生成器

    一.迭代器 一. 递归和迭代 生活实例说明什么是递归和迭代 A想去腾达大厦,问B怎么走路,B 说我不知道,我给你问问C,C也不知道,C又去问D,D知道,把路告诉了C,C又告诉B,B最后告诉A, 这就是 ...

随机推荐

  1. ES 31 - 从0开始搭建Elasticsearch生产集群

    目录 1 配置环境 1.1 服务器IP映射 1.2 配置各节点的ssh免密通信 1.3 安装JDK并配置环境变量 2 部署单节点服务 3 部署集群服务 4 启动集群中的所有节点 4.2 启动各个节点中 ...

  2. oracle高性能的SQL语句的写法

    1.当多表查询的时候,把数据量小的表放在最后面,ORACLE会把最后面的表当作基础表,因为表间连接时,最右边的表会被放到嵌套循环的最外层.最外层的循环次数越少,效率越高. 2.Oracle采用自下而上 ...

  3. nginx反向代理带路径访问问题

    nginx的配置为192.168.0.219:80分别映射到upstream组192.168.0.55:8080和192.168.0.206:8080,那如何配置做到访问192.168.0.219:8 ...

  4. JS Map对象

    java和C#等高级语言中都有map这样的键值对,但是js里没有,我们需要这样的,该怎么做呢? 可以自己使用function封装一个map对象,如下所示 function Map() { this.k ...

  5. 自动改变html font-size,实现移动端rem适配

    移动端采用rem适配非常方便 比如在iphone6尺寸下,将html font-size 设置为 100px,那么写css时,只要将尺寸/100 + rem 即可. 在iphone6Plus尺寸下,h ...

  6. Java反射学习系列-绪论

    Java反射学习系列-绪论 https://blog.csdn.net/hanchao5272/article/details/79358924

  7. JVM调优- 学习笔记(转)

    http://blog.csdn.net/fenglibing/article/details/6321453 GC学习笔记 这是我公司同事的GC学习笔记,写得蛮详细的,由浅入深,循序渐进,让人一看就 ...

  8. saltstack内置state模块file之managed

    managed管理一个模板文件,载入到各个节点并运行相应配置 salt.states.file.managed(name, source=None, source_hash='', user=None ...

  9. 小贝_php+redis简单实例

    php+redis简单实例 一.说明 因为redis是c/s架构.从这个角度上.不论什么符合redis的client要求的.都能够与redis进行通讯.官方提供了非常多的client. php在web ...

  10. [转]为 windows cmd 设置代理

    为 windows cmd 设置代理 转自:http://blog.csdn.net/lovelyelfpop/article/details/69586366 通过cmd命令行执行某些命令,如果这些 ...