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("复制文件失败")

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM