'''
1.查看来源文件夹中的文件
2.通过遍历得到文件夹中的文件(文件名+扩展名)
3.拼接文件 (文件夹+文件名+扩展名)
4.判断来源文件中是 文件夹 还是 文件明.扩展名
如果是文件夹则:
.提前得到目标文件夹+文件名+扩展名
.在目标文件夹里面创建一个与来源文件夹里面相同的文件名的文件夹
.递归调用copy(来源文件夹里文件夹的路径,目标文件夹里文件夹的路径)
.查看来源文件夹中的文件
.通过遍历得到文件夹中的文件(文件名+扩展名)
.拼接文件 (文件夹+文件名+扩展名)
.判断来源文件中是 文件夹 还是 文件明.扩展名
显然是一个递归调用,结束递归的条件是,文件夹中全是文件
如果不是文件夹则:5.读文件中的内容保存起来
6.拼接目标文件(目标文件+文件名+扩展名)
7.将读的内容写到目标文件
'''
sourcefile = r'D:\PyCharm\PycharmProjects\文件操作专用\source' #在哪里拷贝
targetfile = r'D:\PyCharm\PycharmProjects\文件操作专用\target1' #拷贝到那里去
def copy(sourcefile,targetfile): #文件夹
'''
:param sourcefile:
:param targetfile:
:return:
'''
#这里是查看sourcefile文件夹中的有哪些文件,存储在列表中['a.txt', 'b.txt', 'c.docx', 'd', '图片.jpg']
list_dir = os.listdir(sourcefile)
#循环遍历列表
for filename in list_dir:
#文件的拼接
rpath = os.path.join(sourcefile,filename)
#判断是否是文件夹
if os.path.isdir(rpath): #是文件夹执行
# D:\PyCharm\PycharmProjects\文件操作专用\source\d
# D:\PyCharm\PycharmProjects\文件操作专用\target1\d
#将目标文件夹拼接上文件夹的路径
target_path1 = os.path.join(targetfile,filename)
#判断目标文件夹与来源文件夹里面是否有相同的文件夹
folder = os.path.exists(target_path1)
#如果不存在就创建一个文件夹
if not folder:
#给目标文件夹创建一个与来源文件夹里面相同名字的文件夹
os.mkdir(target_path1)
#递归调用函数(来源文件夹里的文件夹,目标文件夹中的文件夹)
copy(rpath,target_path1)
else: #不是文件夹
with open(rpath,'rb') as rstream:
#将内容读到something中,以二进制的形式
something = rstream.read()
#拼接目标文件夹,与文件名+扩展名
wpath = os.path.join(targetfile,filename)
with open(wpath,'wb') as wstream:
#将内容写到目标文件夹中
wstream.write(something)
else:
# 打印几次拷贝成功,则是进行了几次递归,就是文件夹中嵌套文件夹
print('拷贝成功!')
copy(sourcefile,targetfile)
拷贝文件(包括文件夹中的文件夹)
最新推荐文章于 2023-05-14 22:36:08 发布