- 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
描述
本题目的是为了把源目录下的所有文件复制到目标路径下,如果目标路径不存在,则进行创建。
本题会在 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
复制代码
题解
这题主要是有两个点:
- 复制目录下的所有文件
- 目标路径不存在则创建。
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)
复制代码