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, 这就是 ...
随机推荐
- iOS 提交应用到appStore报错ITMS-90xxx
1.ITMS-90535 解决办法:全局文件搜索info.plist 删除掉报错的第三方中的info.plist,再重新打包,注意不要删除自己项目中的info.plist
- iOS引用当前显示的UIAlertView
UIAlertView在iOS里和一般的UIView不一样,有时候使用起来会有一些不便.特别要引用当前显示的UIAlertView的时候,就存在一些难度. 在iOS7以前,可以下面的代码可以解决这个问 ...
- 使用Percona监控插件监控MySQL
1.使用Percona监控插件监控MySQL yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/per ...
- Eclipse中Copy Qualified Name复制类全名解决办法
Eclipse中用Copy Qualified Name复制类全名时总是这样的/struts1/src/me/edu/HelloAction.java很不方便可以这样解决下载下边插件解压到Eclips ...
- ffmpeg保存原始数据PCM YUV
保存yuv ffmpeg -i video.mp4 -c:v rawvideo -pix_fmt yuv420p out.yuv 保存pcm ffmpeg -i input.flv -f s16le ...
- Android Studio gradle 文件中 ${supportLibVersion} 用法
一般我们在项目中的gradle会添加如下库文件 dependencies { compile 'com.android.support:appcompat-v7:23.1.0' compile 'co ...
- Java多线程中的竞争条件、锁以及同步的概念
竞争条件 1.竞争条件: 在java多线程中,当两个或以上的线程对同一个数据进行操作的时候,可能会产生“竞争条件”的现象.这种现象产生的根本原因是因为多个线程在对同一个数据进行操作,此时对该数据的操作 ...
- [Android Studio 权威教程]AS 中配置强大的版本号管理系统(Git、SVN、等)
在Eclipse中加入Git等版本号管理工具须要自己加入插件.并且个人认为不咋好用,在AS中已经给我们集成好了,我们仅仅须要配置一下就OK了.今天就和大家聊聊怎么配置以及使用的要点. 1. 安装Git ...
- 弹窗:popwindow 4部分
弹窗:popwindow 四部分 ①windows.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN ...
- python三大器
装饰器 装饰器的作用: 装饰器的本质:一个闭包函数 (高阶函数+嵌套函数) 装饰器的功能:在不修改原函数及其调用方式的情况下对原函数功能进行扩展 闭包原理 装饰器执行流程 带多个参数函数 import ...