7.1.5 文件的复制

file类并没有提供直接复制文件的方法,但是可以使用read()、write()方法,同样可以实现复制文件的功能。下面【例7-3】这段代码把hello.txt的内容复制给hello2.txt。

【例7-3.py】


01     # 使用read()、write()实现复制
02     # 创建文件hello.txt
03     src = open("hello.txt", "w")
04     li = ["hello world\n", "hello China\n"]
05     src.writelines(li)
06     src.close()
07     # 把hello.txt复制到hello2.txt
08     src = open("hello.txt", "r")
09     dst = open("hello2.txt", "w")
10     dst.write(src.read())
11     src.close()
12     dst.close()

【代码说明】

·第8行代码以只读的方式打开文件hello.txt。

·第9行代码以只写的方式打开文件hello2.txt。

·第10行代码,通过read()读取hello.txt的内容,然后把这些内容写入hello2.txt。

shutil模块是另一个文件、目录的管理接口,提供了一些用于复制文件、目录的函数。copyfile()函数可以实现文件的复制,copyfile()函数的声明如下所示。


copyfile(src, dst)

【代码说明】

·参数src表示源文件的路径,src是字符串类型。

·参数dst表示目标文件的路径,dst是字符串类型。

·该函数把src指向的文件复制到dst指向的文件。

文件的剪切可以使用move()函数实现,该函数的声明如下所示。


copyfile(src, dst, *, follow_symlinks=True)

move()的参数和copyfile()相同,移动一个文件或目录到指定的位置,并且可以根据参数dst重命名移动后的文件。下面这段代码使用shutil模块实现文件的复制。


01     # shutil模块实现文件的复制
02     import shutil
03
04     shutil.copyfile("hello.txt","hello2.txt")
05     shutil.move("hello.txt","../")
06     shutil.move("hello2.txt","hello3.txt")

【代码说明】

·第4行代码调用copyfile(),把hello.txt的内容复制给hello2.txt。

·第5行代码调用move(),把hello.txt复制到当前目录的父目录,然后删除hello.txt。相当于把文件hello.txt剪切下来再粘贴到父目录。

·第6行代码调用move(),把hello2.txt移动到当前目录,并命名为hello3.txt。hello2.txt将被删除。