python递归下载文件夹下所有文件实例

作者:袖梨 2019-08-31

本篇文章小编给大家分享一下python递归下载文件夹下所有文件实例,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。

1.安装requests库

pip install requests

2.下载文件夹下所有文件及文件夹

这里需要处理的地方主要是文件夹,这里我们判断出该链接是文件夹时,自动创建文件夹,并递归继续进行操作,否则判断该链接是文件,直接使用requests get方法下载,话不多说,看代码

####春江暮客 www.bobobk.com
import requests
import re
import os
import sys
def help(script):
 text = 'python3 %s https://www.bobobk.com ./' % script

 print(text)
def get_file(url,path):##文件下载函数
  content = requests.get(url)
  print("write %s in %s" % (url,path))
  filew = open(path+url.split("/")[-1],'wb')
  for chunk in content.iter_content(chunk_size=512 * 1024): 
    if chunk: # filter out keep-alive new chunks
      filew.write(chunk)
  filew.close()
def get_dir(url,path): #文件夹处理逻辑
  content = requests.get(url).text
  if "Index of" in content:
    sub_url = re.findall('href="(.*?)" rel="external nofollow" ',content)
  
    print(sub_url)
    for i in sub_url:
      if "/" in i:
      
        i = i.split("/")[0]
        print(i)
        if i!="." and i!="..":
          
          if not os.direxists(path+i):
            os.mkdir(path+i)
         
          get_dir(url+"/"+i,path+i+"/")
          print("url:"+url+"/"+i+"nurl_path:"+path+i+"/")
      else:
        get_file(url+"/"+i,path)
  else:
    get_file(url,path)
if __name__ == '__main__':
 if not sys.argv[1]:
 help(sys.argv[0])
 exit(0)
 else:
 get_dir(sys.argv[1],"./")</pre>
<p>
	至此,就在本地目录完全还原下载原网站的路径和文件了。
</p>
    </div>
    
    
    
    </div>
</section>


<div class="wrap-box">
    <div class="turnPage wrapStyle">
                    <a href="https://m.111com.net/art-177068.htm">上一个:<span>Python如何实现Restful API Python实现Restful API实例</span></a>
                            <a href="https://m.111com.net/art-177072.htm">下一个:<span>php数组遍历类与用法</span></a>
            </div>
</div>


    
    
    <section class="wrap-box">
        <div class="g-tit">
            <h2>相关文章</h2>
        </div>
        <ul class="s-list nobord notop">
                        <li>
                <a href="https://m.111com.net/art-225272.htm" class="s-card">
                    <div class="s-card-l">
                        <p class="tit">Golang ProtoBuf的基本语法详解</p>
                        <div class="info">
                            <span class="person">python</span>
                            <span class="time">2022-10-20</span>
                        </div>
                    </div>
                                        <div class="s-card-pic">
                        <img src="https://assets.111com.net/images/lazy.gif" data-src="https://img.111com.net/m00/da/59/e6daf5a5dd9ae2b841d8ca92ec29c62a_c_246_164.jpg" alt="Golang ProtoBuf的基本语法详解" />
                    </div>
                                    </a>
            </li>
                        <li>
                <a href="https://m.111com.net/art-225253.htm" class="s-card">
                    <div class="s-card-l">
                        <p class="tit">Python识别MySQL中的冗余索引解析</p>
                        <div class="info">
                            <span class="person">python</span>
                            <span class="time">2022-10-20</span>
                        </div>
                    </div>
                                    </a>
            </li>
                        <li>
                <a href="https://m.111com.net/art-224372.htm" class="s-card">
                    <div class="s-card-l">
                        <p class="tit">Python+Pygame绘制小球代码展示</p>
                        <div class="info">
                            <span class="person">python</span>
                            <span class="time">2022-10-18</span>
                        </div>
                    </div>
                                        <div class="s-card-pic">
                        <img src="https://assets.111com.net/images/lazy.gif" data-src="https://img.111com.net/m00/41/a3/91aa2fba8b3900828d133d0551e4747d_c_246_164.png" alt="Python+Pygame绘制小球代码展示" />
                    </div>
                                    </a>
            </li>
                        <li>
                <a href="https://m.111com.net/art-224341.htm" class="s-card">
                    <div class="s-card-l">
                        <p class="tit">Python中的数据精度问题介绍</p>
                        <div class="info">
                            <span class="person">python</span>
                            <span class="time">2022-10-18</span>
                        </div>
                    </div>
                                        <div class="s-card-pic">
                        <img src="https://assets.111com.net/images/lazy.gif" data-src="https://img.111com.net/m00/e2/d8/34fdeeca7c757f5abf98206cbe4144fa_c_246_164.png" alt="Python中的数据精度问题介绍" />
                    </div>
                                    </a>
            </li>
                        <li>
                <a href="https://m.111com.net/art-224332.htm" class="s-card">
                    <div class="s-card-l">
                        <p class="tit">Python随机值生成的常用方法介绍</p>
                        <div class="info">
                            <span class="person">python</span>
                            <span class="time">2022-10-18</span>
                        </div>
                    </div>
                                        <div class="s-card-pic">
                        <img src="https://assets.111com.net/images/lazy.gif" data-src="https://img.111com.net/m00/bf/05/2869b7d762e57073c417a894e237349e_c_246_164.png" alt="Python随机值生成的常用方法介绍" />
                    </div>
                                    </a>
            </li>
                        <li>
                <a href="https://m.111com.net/art-218290.htm" class="s-card">
                    <div class="s-card-l">
                        <p class="tit">python3解压缩.gz文件分析</p>
                        <div class="info">
                            <span class="person">python</span>
                            <span class="time">2022-09-27</span>
                        </div>
                    </div>
                                        <div class="s-card-pic">
                        <img src="https://assets.111com.net/images/lazy.gif" data-src="https://img.111com.net/m00/62/c5/16619bf23328303917cf6e6586256f71_c_246_164.png" alt="python3解压缩.gz文件分析" />
                    </div>
                                    </a>
            </li>
                    </ul>
    </section>
    
    

    
    <section class="wrap-box">
        <div class="g-tit">
            <h2>精彩推荐</h2>
            
        </div>
        
                <ul class="card-box">
            <li class="card3">
        <a href="https://m.111com.net/azgame/46853.htm" target="_self" class="figure">
            <div class="figure-box">
                <img src="https://assets.111com.net/images/lazy.gif" data-src="https://img.111com.net/attachment/m_soft/46853/5dcb71bae30a3.png" alt="一剑斩仙" />
            </div>
            <p class="figure-head">一剑斩仙</p>
            <span class="figure-btn">下载</span>
        </a>
    </li>
                <li class="card3">
        <a href="https://m.111com.net/azgame/224592.htm" target="_self" class="figure">
            <div class="figure-box">
                <img src="https://assets.111com.net/images/lazy.gif" data-src="https://img.111com.net/m00/77/b7/b0a10d2c1b09f241dabff441346fb91c.png" alt="超级雷电战机" />
            </div>
            <p class="figure-head">超级雷电战机</p>
            <span class="figure-btn">下载</span>
        </a>
    </li>
                <li class="card3">
        <a href="https://m.111com.net/azgame/30153.htm" target="_self" class="figure">
            <div class="figure-box">
                <img src="https://assets.111com.net/images/lazy.gif" data-src="https://img.111com.net/attachment/m_soft/30153/6d482cbc24.jpg" alt="烈火一刀" />
            </div>
            <p class="figure-head">烈火一刀</p>
            <span class="figure-btn">下载</span>
        </a>
    </li>
                <li class="card3">
        <a href="https://m.111com.net/azgame/42147.htm" target="_self" class="figure">
            <div class="figure-box">
                <img src="https://assets.111com.net/images/lazy.gif" data-src="https://img.111com.net/attachment/m_soft/42147/5d4cf5dfeb6ca.png" alt="天使纪元" />
            </div>
            <p class="figure-head">天使纪元</p>
            <span class="figure-btn">下载</span>
        </a>
    </li>
                                                </ul>

<ul class="card-box-b">
                                            <li class="card10">
        <a href="https://m.111com.net/azgame/127872.htm" target="_self" class="figure2">
            <div class="figure-box">
                <img src="https://assets.111com.net/images/lazy.gif" data-src="https://img.111com.net/mobile/202111/15/35c0b8587a.png" alt="完美修真" />
            </div>
            <div class="figure-cont">
                <p class="figure-head">完美修真</p>
                <div class="figure-desc">
                    <span>角色扮演</span>
                    <span>538.52 MB</span>
                </div>
                <div class="figure-desc">
                    <p>高清画质体验,华丽场景视觉盛宴</p>
                </div>
            </div>
            <span class="figure-btn">下载</span>
        </a>
    </li>
                <li class="card10">
        <a href="https://m.111com.net/azgame/30904.htm" target="_self" class="figure2">
            <div class="figure-box">
                <img src="https://assets.111com.net/images/lazy.gif" data-src="https://img.111com.net/attachment/m_soft/30904/fd82743d5b.png" alt="永恒领主" />
            </div>
            <div class="figure-cont">
                <p class="figure-head">永恒领主</p>
                <div class="figure-desc">
                    <span>即时网游</span>
                    <span>392.00 MB</span>
                </div>
                <div class="figure-desc">
                    <p>3D魔幻MMO</p>
                </div>
            </div>
            <span class="figure-btn">下载</span>
        </a>
    </li>
                <li class="card10">
        <a href="https://m.111com.net/azgame/113807.htm" target="_self" class="figure2">
            <div class="figure-box">
                <img src="https://assets.111com.net/images/lazy.gif" data-src="https://img.111com.net/mobile/202107/01/275a3dca7e.png" alt="九州八荒录" />
            </div>
            <div class="figure-cont">
                <p class="figure-head">九州八荒录</p>
                <div class="figure-desc">
                    <span>角色扮演</span>
                    <span>232.56 MB</span>
                </div>
                <div class="figure-desc">
                    <p>九州八荒,一剑入魂。</p>
                </div>
            </div>
            <span class="figure-btn">下载</span>
        </a>
    </li>
                <li class="card10">
        <a href="https://m.111com.net/azgame/372634.htm" target="_self" class="figure2">
            <div class="figure-box">
                <img src="https://assets.111com.net/images/lazy.gif" data-src="https://img.111com.net/m00/f5/99/f276753f2f8beb9dd0cceb843afcf723.png" alt="航海王燃烧意志" />
            </div>
            <div class="figure-cont">
                <p class="figure-head">航海王燃烧意志</p>
                <div class="figure-desc">
                    <span>角色扮演</span>
                    <span>1.57 GB</span>
                </div>
                <div class="figure-desc">
                    <p>热血激战动作冒险游戏</p>
                </div>
            </div>
            <span class="figure-btn">下载</span>
        </a>
    </li>
                <li class="card10">
        <a href="https://m.111com.net/azgame/37526.htm" target="_self" class="figure2">
            <div class="figure-box">
                <img src="https://assets.111com.net/images/lazy.gif" data-src="https://img.111com.net/m00/f3/6a/29dc4894964b32d77cad35e9676985d4.png" alt="君临传奇" />
            </div>
            <div class="figure-cont">
                <p class="figure-head">君临传奇</p>
                <div class="figure-desc">
                    <span>角色扮演</span>
                    <span>43.57 MB</span>
                </div>
                <div class="figure-desc">
                    <p>经典RPG战斗手游</p>
                </div>
            </div>
            <span class="figure-btn">下载</span>
        </a>
    </li>
        </ul>
    </section>

    
    <footer class="foot">
    <a href="https://m.111com.net/" class="logo-icon">
        <img src="https://assets.111com.net/mobile/images/logo2.png" alt="一聚教程网">
    </a>
    <p>Copyright © 2010-2024</p>
    <p>111com.net All Rights Reserved</p>
    
</footer>

<div class="back-top" style="display: block;">
    <span class="icon-box"><svg class="icon" viewBox="0 0 1024 1024">
            <path
                d="M213.333333 640h170.666667v256h256v-256h170.666667l-298.666667-341.333333zM170.666667 128h682.666666v85.333333H170.666667z"
                fill="#0374f3">
            </path>
        </svg>
    </span>
</div>

    <script src="https://api.111com.net/api/stat/hits?type=article&id=177069"></script>
</div>

<script src="https://assets.111com.net/js/stat.js?v=2024022101"></script>
</body>
</html>