如何在Python中复制文件

时间:2020-01-09 10:44:18  来源:igfitidea点击:

在这篇文章中,我们将介绍使用Python复制文件的不同方法。

1.在Python中复制文件的一种简单方法是,一旦拥有文件对象,就使用read()方法读取文件,然后将内容写入另一个文件。

以下Python程序以二进制模式打开图像文件,然后将其写入另一个文件。

def copy_file(src_file, dest_file):
    try:
        f1 = open(src_file, 'rb')
        f2 = open(dest_file, 'wb')
        b = f1.read()
        f2.write(b)
        print('Coying image completed...')
    finally:
        f1.close()
        f2.close()

#calling function
copy_file('F:/theitroad/image.png', 'F:/theitroad/Python/newimage.png')

2.当然,Python中有更好的方法来复制文件。 Shutil模块对文件和文件集合提供了许多高级操作。
在该模块中,有一个函数shutil.copyfile(src,dest),它将名为src的文件的内容复制到名为dst的文件。目标必须是完整的目标文件名,并且必须是可写的。如果dst已经存在,它将被替换。函数返回到目标文件的路径。

请注意,此功能不会复制文件的元数据(权限位,最后访问时间,最后修改时间)。

def copy_file(src_file, dest_file):
    try:
        shutil.copyfile(src_file, dest_file)
        print('Copying file completed...')
    except shutil.SameFileError as error:
        print(error)
        print('source and destination files are same')
    except IOError as error:
        print(error)
        print('Destination not writable')
    # Any other exception
    except:
        print('Error while copying')

3.如果要复制文件和元数据(权限位,上次访问时间,上次修改时间),请使用shutil.copystat(src,dst)

def copy_file(src_file, dest_file):
    try:
        shutil.copystat(src_file, dest_file)
        print('Copying file completed...')
    except shutil.SameFileError as error:
        print(error)
        print('source and destination files are same')
    except IOError as error:
        print(error)
        print('Destination not writable')
    # Any other exception
    except:
        print('Error while copying')

4.如果要将源文件复制到另一个目录,可以使用shutil.copy(src,dst)完成

此处dst可以指定目录,并且文件将使用src中的基本文件名复制到dst中。函数返回到新创建文件的路径。

def copy_file(src_file, dest_dir):
    try:
        file_path = shutil.copy(src_file, dest_dir)
        print('Copying file completed...', dest_dir)
    except shutil.SameFileError as error:
        print(error)
        print('source and destination files are same')
    except IOError as error:
        print(error)
        print('Destination not writable')
    # Any other exception
    except:
        print('Error while copying')