lintcode-2107 · 批量复制文件

描述

本题目的是为了把源目录下的所有文件复制到目标路径下,如果目标路径不存在,则进行创建。

本题会在 main.py 中导入你在 copy_folder.py 中完整的代码并运行,以实现目录下所有文件的转移。

样例

评测机会通过执行命令 python copy_folder.py {from_dir_path} {to_dir_path} 来执行你的代码,并将 from_dir_path 和 to_dir_path 作为命令行参数传入,你可以在 main.py 中了解代码是如何运行的。

样例一

当输入文件路径为:

/data/testcase1/ /output/dir1/
复制代码

输出数据为:

comparator output: success
复制代码

样例二

当输入文件路径为:

/data/testcase2/ /output/dir2/
复制代码

输出数据为:

comparator output: success
复制代码

题解

这题主要是有两个点:

  1. 复制目录下的所有文件
  2. 目标路径不存在则创建。

os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。 它不包括 . 和 .. 即使它在文件夹中。 只支持在 Unix, Windows 下使用。

os.path.isfile():判断某一对象(需提供绝对路径)是否为文件。 shutil.copyfile(src, dst):复制文件内容(不包含元数据)从src到dst。

shutil.copytree复制文件夹下面所有文件跟文件夹

shutil.copyfileobj(fsrc, fdst[, length]):复制文件内容(不包含元数据)从类文件对象src到类文件对dst。

import shutil
import os


def copy_folder(from_dir_path, to_dir_path):
    # write your code here
    file_list = os.listdir(from_dir_path)
    if os.path.exists(to_dir_path)==False:
        os.makedirs(to_dir_path)
    for i in file_list:
        # print("文件有",i)
        # print(type(i))
        if(os.path.isfile(from_dir_path+"/"+i)):    
            shutil.copyfileobj(open(from_dir_path+"/"+i,'r'), open(to_dir_path+"/"+i,'a'))
        else:
            shutil.copytree(from_dir_path+"/"+i,to_dir_path+"/"+i)
    # shutil.copytree(from_dir_path, to_dir_path)
复制代码

猜你喜欢

转载自juejin.im/post/7019313191792410661