python第六篇:Python复制超大文件、复制二进制文件
Python文件复制
- # 写程序实现复制文件的功能
- # 要求:
- # 1. 源文件路径和目标文件路径需要手动输入
- # 2. 要考虑文件关闭的问题
- # 3. 要考虑复制超大文件的问题
- # 4. 要能复制二进制文件
- def copy_file():
- '''
- 此函数实现文件复制功能
- source_dir:源文件路径
- target_dir:目标文件路径
- '''
- source_dir = input("请输入源文件路径:")
- target_dir = input("请输入目标文件路径:")
- try:
- f = open(source_dir,'rb')
- try:
- try:
- f2 = open(target_dir,'wb')
- # 可能突然断电或者U盘被拔出了
- try:
- for i in f:
- f2.write(i)
- f.close()
- f2.close()
- finally:
- f2.close()
- except OSError:
- print("打开写文件失败")
- return False
- finally:
- f.close()
- except OSError:
- print("打开读文件失败")
- return False
- copy_file()
下面的是改良之后的版本,避免过多次数的进行磁盘操作
- # 1. 写程序实现复制文件功能:
- # 要求:
- # 1. 源文件路径和目标文件路径需手动输入
- # 2. 要考虑关闭文件问题
- # 3. 要考虑复制超大文件问题
- # 4. 要能复制二进制文件
- def mycopy(src_file, dst_file):
- """此函数的功以实现复制文件
- src_file : 源文件名
- dst_file : 目标文件名
- """
- try:
- fr = open(src_file, "rb") # fr读文件
- try:
- try:
- fw = open(dst_file, 'wb') # fw写文件
- try:
- while True:
- data = fr.read(4096)
- if not data:
- break
- fw.write(data)
- except:
- print("可能U盘被拔出...")
- finally:
- fw.close() # 关闭写文件
- except OSError:
- print("打开写文件失败")
- return False
- finally:
- fr.close() # 关闭读文件
- except OSError:
- print("打开读文件失败")
- return False
- return True
- s = input("请输入源文件路径名: ")
- d = input("请输入目标文件路径名: ")
- if mycopy(s, d):
- print("复制文件成功")
- else:
- print("复制文件失败")
下面是with语句改写后的代码:
- # 1. 写程序实现复制文件功能:
- # 要求:
- # 1. 源文件路径和目标文件路径需手动输入
- # 2. 要考虑关闭文件问题
- # 3. 要考虑复制超大文件问题
- # 4. 要能复制二进制文件
- def mycopy(src_file, dst_file):
- """此函数的功以实现复制文件
- src_file : 源文件名
- dst_file : 目标文件名
- """
- try:
- with open(src_file, "rb") as fr,open(dst_file, 'wb') as fw: # fr读文件
- while True:
- data = fr.read(4096)
- if not data:
- break
- fw.write(data)
- except OSError:
- print("打开读文件失败")
- return False
- except:
- print("可能U盘被拔出...")
- return True
- s = input("请输入源文件路径名: ")
- d = input("请输入目标文件路径名: ")
- if mycopy(s, d):
- print("复制文件成功")
- else:
- print("复制文件失败")
python第六篇:Python复制超大文件、复制二进制文件的更多相关文章
- 解剖SQLSERVER 第十六篇 OrcaMDF RawDatabase --MDF文件的瑞士军刀(译)
解剖SQLSERVER 第十六篇 OrcaMDF RawDatabase --MDF文件的瑞士军刀(译) http://improve.dk/orcamdf-rawdatabase-a-swiss-a ...
- 【Python之路】第六篇--Python基础之模块
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...
- python 历险记(六)— python 对正则表达式的使用(上篇)
目录 引言 什么是正则表达式? 正则表达式有什么用? 正则表达式的语法及使用实例 正则表达式语法有哪些? 这些正则到底该怎么用? 小结 参考文档 系列文章列表 引言 刚接触正则表达式,我也曾被它们天书 ...
- Python开发 第一篇 python的前世今生
Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...
- scp - 安全复制(远程文件复制程序)
总览 SYNOPSIS scp -words [-pqrvBC1246 ] [-F ssh_config ] [-S program ] [-P port ] [-c cipher ] [-i ide ...
- python第六篇文件处理类型
阅读目录 一 文件操作 二 打开文件的模式 三 操作文件的方法 四 文件内光标移动 五 文件的修改 文件处理 ...
- Python 第六篇(中):面向对象编程中级篇
面向对象编程中级篇: 编程思想概述: 面向过程:根据业务逻辑从上到下写垒代码 #最low,淘汰 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 #混口饭吃 def add(ho ...
- 使用Python读写文件进行图片复制(文件复制)
发现Python在读二进制文件时,可以生成一个新的文件,操作还很简单,如下:对一个jpeg的文件进行复制 fp1=open("e:\\1.jpeg","rb") ...
- 第十六篇 Python之迭代器与生成器
一.迭代器 一. 递归和迭代 生活实例说明什么是递归和迭代 A想去腾达大厦,问B怎么走路,B 说我不知道,我给你问问C,C也不知道,C又去问D,D知道,把路告诉了C,C又告诉B,B最后告诉A, 这就是 ...
随机推荐
- es6/es7 对象数组的合并拷贝
方法一: let o1 = { a: 1, b: 2, c: 3 }; let o2 = {...o1, d: 4}; // o2 = { a: 1, b: 2, c: 3, d: 4 } let a ...
- lua学习笔记(九)
环境 全局变量table lua把所有的全局变量存在一个table里,并把这个table赋值给一个全局变量_G _G也在这个全局变量的table里,它就是一个普通 ...
- lua学习笔记(八)
元表与元方法 基本概念 1.lua中每个值都有一个元表 2.table和userdata可以有各自独立的元表 3.其它类型的值共享其类型所属的单一 ...
- dedecms增加自定义表单管理员
打开\dede\inc\grouplist.txt 添加 >>自定义表单 >f_List>列出表单 >f_New>新建表单 >f_Edit>编辑表单 & ...
- 并行归并排序——MPI
并行归并排序在程序开始时,会将n/comm_comm个键值分配给每个进程,程序结束时,所有的键值会按顺序存储在进程0中.为了做到这点,它使用了树形结构通信模式.当进程接收到另一个进程的键值时,它将该键 ...
- CentOS VSCode调试go语言出现:exec: "gcc": executable file not found in PATH
CentOS VSCode调试go语言出现:exec: "gcc": executable file not found in PATH 解决方案: 执行如下命令安装GCC,然后重 ...
- linux VI模式下批量修改文件内容
1. :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky 2. ...
- 【入门】创建express项目
1.创建项目(图解) 2.访问http://localhost:3000/就看到熟悉的页面了 3.查看项目目录 参考文档:http://jingyan.baidu.com/article/92 ...
- Node-Webkit - package.json - 参数设置
必填: main :(string)APP的主入口,指定一个html文件,如:main:"index.htm". name :(string)APP的名称,必须具有唯一性. 例子: ...
- 1 了解Scala
1 定义变量 单个变量:var name = "benxintuzi" 等价于 var name : String = "benxintuzi"(即定义变量时 ...