03-复制文件和文件夹
10.1.1 复制文件和文件夹
shutil
模块提供了一些函数,用于复制文件和整个文件夹。
调用 shutil.copy(source, destination)
,将路径 source
处的文件复制到路径 destination
处的文件夹( source
和 destination
都是字符串)。如果 destination
是一个文件名,那么它将作为被复制文件的新名字。该函数返回一个字符串,表示被复制文件的路径。
在交互式环境中输入以下代码,看看 shutil.copy()
的效果:
>>> import shutil, os
>>> from pathlib import Path
>>> p = Path.home()
❶ >>> shutil.copy(p/'spam.txt', p / 'some_folder')
'C:\\Users\\Al\\some_folder\\spam.txt'
❷ >>> shutil.copy(p / 'eggs.txt', p / 'some_folder/eggs2.txt')
WindowsPath('C:/Users/Al/some_folder/eggs2.txt')
第一个 shutil.copy()
方法将文件C:\Users\Al\spam.txt复制到文件夹C:\Users\Al\some_ folder。返回值是刚刚被复制的文件的路径。请注意,因为只是指定了一个文件夹作为目的地❶,所以原来的文件名spam.txt就被用作新复制的文件名。第二个 shutil.copy()
方法❷也将文件C:\Users\Al\eggs.txt复制到文件夹C:\Users\Al\some_folder,但为新文件提供了一个名字eggs2.txt。
shutil.copy()
将复制一个文件, shutil.copytree()
将复制整个文件夹以及它包含的文件夹和文件。调用 shutil.copytree(source, destination)
,将路径 source
处的文件夹(包括它的所有文件和子文件夹)复制到路径 destination
处的文件夹。 source
和 destination
参数都是字符串。该函数返回一个字符串,该字符串是新复制的文件夹的路径。
在交互式环境中输入以下代码:
>>> import shutil, os
>>> from pathlib import Path
>>> p = Path.home()
>>> shutil.copytree(p / 'spam', p / 'spam_backup')
WindowsPath('C:/Users/Al/spam_backup')
调用 shutil.copytree()
创建了一个名为spam_backup的新文件夹,其中的内容与原来的bacon文件夹一样。现在你已经备份了非常宝贵的“spam”。