lintcode-2107 · 批量复制文件

举报
搞前端的半夏 发表于 2021/11/30 22:18:18 2021/11/30
【摘要】 大家好,我是半夏👴,一个刚刚开始写文的沙雕程序员.如果喜欢我的文章,可以关注➕ 点赞 👍 加我微信:frontendpicker,邀你进群,一起学习交流前端,成为更优秀的工程师~关注公众号:半夏话前端,了解更多前端知识!点我探索新世界! 描述本题目的是为了把源目录下的所有文件复制到目标路径下,如果目标路径不存在,则进行创建。本题会在 main.py 中导入你在 copy_folder.p...

大家好,我是半夏👴,一个刚刚开始写文的沙雕程序员.如果喜欢我的文章,可以关注➕ 点赞 👍 加我微信:frontendpicker,邀你进群,一起学习交流前端,成为更优秀的工程师~关注公众号:半夏话前端,了解更多前端知识!点我探索新世界!

描述

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

本题会在 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)
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。