第一次使用python来编写脚本进行文件复制时,发现复制后的文件的修改日期都变为当下最新日期了,这个不满足自己的需要,后来上网查找发现还有个copy2()
shutil.copy() 和shutil.copy2() 的区别在于
shutil.copy() 是将文件复制到一个新的地方,创建时间、修改时间、访问时间都是新的;
shutil.copy2() 则是会创建时间、修改时间、访问时间这些也复制过去。
除了以上两种,还有个shutil.copyfile(),个人感觉和shutil.copy() 一样,会创建新的修改时间等信息。
关于copy2() 的详细使用:
copy2() 基础使用
import shutil
#shutil.copy2(【要被复制的文件】,【复制后存放的位置】)
shutil.copy2("D:/TOOLS/public.txt","D:/fart/a/b/c/d/e/kok/")
copy2() 高级使用
import shutil
#shutil.copy2(【要被复制的文件】,【复制后存放的文件】)
shutil.copy2("D:/TOOLS/public.txt","D:/fart/a/b/c/d/e/kok/HH.txt")
shutil.copy2("D:/TOOLS/public.txt","D:/fart/a/b/c/d/e/kok/HH.so")
shutil.copy2("D:/TOOLS/public.txt","D:/fart/a/b/c/d/e/kok/666")
实例:(将目录A下的所有文件及其文件夹中的所有文件复制到目录B)
import shutil
import os
# 将目录的文件复制到指定目录
def copy_demo(src_dir, dst_dir):
"""
复制src_dir目录下的所有内容到dst_dir目录
:param src_dir: 源文件目录
:param dst_dir: 目标目录
:return:
"""
if not os.path.exists(dst_dir):
os.makedirs(dst_dir)
if os.path.exists(src_dir):
for file in os.listdir(src_dir):
file_path = os.path.join(src_dir, file)
dst_path = os.path.join(dst_dir, file)
if os.path.isfile(os.path.join(src_dir, file)):
shutil.copy2(file_path, dst_path) //这里使用的coyp2(),不会改变文件原有的信息
else:
copy_demo(file_path, dst_path)
print("存在多级文件夹,正在复制。")
#源文件路径
source_path = r'D:\source'
#目标路径
target_path = r'D:\target'
copy_demo(source_path,target_path)