Package:shutil
方法:
shutil.copy()
copy() 方法的功能类似于 Unix 中的“cp”命令。这意味着如果目标是一个文件夹,那么它将在其中创建一个与源文件具有相同名称(基本名称)的新文件。此外,该方法会在复制源文件的内容后同步目标文件权限到源文件。
shutil.copyfile():
它将源内容复制到目标文件中。
如果目标文件不可写入,那么复制操作将导致 IOError 异常。
如果源文件和目标文件都相同,它将会返回 SameFileError。
但是,如果目标文件之前有不同的名称,那么该副本将会覆盖其内容。
如果目标是一个目录,这意味着此方法不会复制到目录,那么会发生 Error 13。
copy() vs copyfile() :
copy() 还可以在复制内容时设置权限位,而 copyfile() 只复制数据。
如果目标是目录,则 copy() 将复制文件,而 copyfile() 会失败,出现 Error 13。
--------------------------------------------------------------7.11更新-------------------------------------------------------------------------------------
今天用到了对文件夹进行复制/移动的操作,在这里使用的事copytree()函数。
具体代码如下:
def copy_file_to_species(dataset_dir, sub_class_dir, sub_dir):
class_dir = os.path.join(dataset_dir, sub_class_dir)
little_sample = get_little_sample(class_dir)
for directory in os.listdir(class_dir):
if directory in little_sample:
print(directory)
files = os.path.join(class_dir, directory)
print(files)
little_sample_file = os.path.join(dataset_dir, sub_dir, directory)
#print(little_sample_file)
#copytree会自动创建新目录
shutil.copytree(files, little_sample_file)
#shutil.copy(img_file, genus_file)
复制的语句为:
shutil.copytree(files, little_sample_file)
- files为原文件夹,即需要复制的文件夹
- little_sample_file为新文件夹,该文件夹下存的就是复制过来的文件
原始文件夹:D:\CC\**\数据2015\**********\train_data\3500
目标文件夹:D:\CC\**\数据2015\**********\sample_data\3500
我只是将train_data下面的文件 夹移动到了sample_data下。