拷贝文件(包括文件夹中的文件夹)

'''
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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值