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复制超大文件、复制二进制文件的更多相关文章

  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. 【转】Lua 操作系统库

      转老帖子备份 转自:http://www.cnblogs.com/whiteyun/archive/2009/08/10/1542913.html os.clock () 功能:返回一个程序使用C ...

  2. pwd 命令

    Linux中用 pwd 命令来查看”当前工作目录“的完整路径. 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录. 在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置. ...

  3. C指针解析 ------ 指针的算术运算

    本文是自己学习所做笔记.欢迎转载.但请注明出处:http://blog.csdn.net/jesson20121020 指针是一个特殊的变量,表示一个地址,而地址能够上减去或加上一个整数,从而能够表示 ...

  4. window mysql安装步骤

    window安装mysql(本人系统win10 64位 安装mysql-5.7.10-winx64) 1. 官网下载mysql zip安装包,然后解压到你想安装的目录,假设解压的目录是P:\mysql ...

  5. oracle导出sql

    1.点击要导出的表2.右键点击exportData3.选择要导出的sql语句

  6. python#模拟发送电子邮件

    #-*- coding:utf-8 -*- #模拟发送电子邮件 from email.mime.text import MIMEText from_addr = 'aa@sss.com' passwo ...

  7. Linux下tar解压缩命令

    1.打包命令: 命令格式:tar  -zcvf   压缩文件名.tar.gz   被压缩文件名 可先切换到当前目录下.压缩文件名和被压缩文件名都可加入路径. 2.解包命令: 命令格式:tar  -zx ...

  8. Cocos2d-x 3.2 之 别踩白块(第三篇)

    ***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...

  9. [原创]aaencode等类似js加密方案破解方法

    受http://tieba.baidu.com/p/4104806767 2L启发,不过他说的方法,我没有尝试成功,自己摸索出了一个新方法,在这里分享下. 首先拿aaencode官网的加密字符串作为例 ...

  10. gIt 常用 操作

    git提交代码流程git status -- 查看当前仓库状态git add  -- 添加到临时仓库git commit -m '注释'  -- 添加到临时仓库git status -- 查看当前仓库 ...