需求说明

将服务器上的文件(动物图片)批量下载到本地,并保留服务器上的目录结构。

一个很好的下载方法是:将服务器上的文件压缩为一个压缩包,然后直接下载一个压缩包到本地即可。
该方案缺点:压缩后的压缩包过大,如果下载中断则需重头开始下载。

服务器上文件目录

在服务器的 /home/work 目录下有如下数据:

animals--train|--dog|-- dog_1.jpg|-- dog_2.jpg|--......|--cat|--cat_1.jpg|--cat_2.jpg|--......--valid|--dog|--......|--cat|--......--test|--dog|--......|--cat|--......

解决方案

批量生成要下载图片的目录结构

  1. 在服务器端切换到 /home/work/animals 目录,执行 python -m http.server 8811
(base) work@instance-cli0crch:~$ cd /home/work/animals
(base) work@instance-cli0crch:~$ python -m http.server 8811
  1. 浏览器访问 http://server_ip:8811/ 即可看到如下目录结构:

  2. 如下即为要下载的文件:

    下载链接即为 http://server_ip:8811/train/dog/dog_1.jpeg

  3. 遍历 animals 目录,批量生成要下载的文件目录结构:

import os
# 遍历文件夹
def iter_files(rootDir):# 遍历根目录for root, dirs, files in os.walk(rootDir):for file in files:file_name = os.path.join(root,file)file_name = file_name.replace('/home/work/animals/', '')print(file_name)# 将要下载的图片路径写入文件with open('url_dirs.txt', 'a') as f:f.write(file_name + '\n')
# 调用方法
iter_files('/home/work/animals/')

生成的 url_dis.txt 内容如下:

train/cat/cat_1.jpeg
train/cat/cat_2.jpeg
......
train/dog/dog_1.jpeg
train/dog/dog_2.jpeg
......

拼接 url,然后根据 url 列表批量下载文件到本地

import wget
import os
from urllib import error
from http import client# 由于网络问题抛出异常,程序会停止。处理该情况,重新下载
def re_down(url, out_path):try:wget.download(url, out=out_path)except error.ContentTooShortError:print('Network conditions is not good. Reloading...')re_down(url, out_path)except client.RemoteDisconnected:print('client is not good. Reloading...')re_down(url, out_path)# 服务器地址
baseurl = 'http://server_ip:8811'
# 本地保存路径
basepath = r'D:/datasets/animals'
with open('url_dis.txt') as f:# 读取所有图片在服务器的存放路径arr = f.readlines()for name in arr:# 去除末尾的换行符name = name.strip()# 拼接。服务器上的 url。url = baseurl + '/' + name   # 拼接后示例:http://server_ip:8811/train/dog/dog_1.jpeg# 截取第一个 / 到后面的所有内容path = name[name.index('/'):]# 拼接。本地存放路径out_path = basepath + path  # 如 D:/datasets/animals/train/dog/dog_1.jpeg# 截取目录,创建父级目录file_path = out_path[:out_path.rindex('/')]# 如果目录不存在,则创建if not os.path.exists(file_path):os.mkdir(file_path)# print('server url = ', url)print('out_path = ', out_path)# 下载文件到本地# 如果文件不存在,则下载if not os.path.exists(out_path):re_down(url, out_path)

python 根据 url 批量下载文件到本地相关推荐

  1. python批量下载文件-python 从远程批量下载文件到本地

    需求: 1.从postgresql数据库中查出附件名称 2.从远程服务器下载对应的附件 用到的python模块paramiko.psycopg2. paramiko是用python写的一个模块,遵循S ...

  2. MinIO按前缀批量下载文件到本地

    /*** 按前缀批量下载文件到本地* @param bucketName 存储桶名称* @param prefix 文件前缀* @param saveDir 本地存储路径*/@SneakyThrows ...

  3. Python根据URL地址下载文件并保存至对应目录

    Python根据URL地址下载文件并保存至对应目录 引言 在编程中经常会遇到图片等数据集将图片等数据以URL形式存储在txt文档中,为便于后续的分析,需要将其下载下来,并按照文件夹分类存储.本文以Gi ...

  4. 七牛云批量下载文件到本地

    七牛云中文件批量下载 业务需要 之前很多的文件都存储在了七牛云,但是目前有项目需要在内网部署,所以所有的外链资源都要本地化.所以要从七牛云的仓库中再下载回来. 1.终端脚本下载 官方文档 参考官方文档 ...

  5. colab 从云端批量下载文件到本地

    1. 云端下载到本地 方式1:比如要下载train2014目录下所有的文件,则cd到该目录,具体如下,如果要下载多层文件夹下的文件需要对下面代码做些修改 . import os from google ...

  6. python下载文件保存_Python根据URL地址下载文件并保存至对应目录的实现

    引言 在编程中经常会遇到图片等数据集将图片等数据以URL形式存储在txt文档中,为便于后续的分析,需要将其下载下来,并按照文件夹分类存储.本文以Github中Alexander Kim提供的图片分类数 ...

  7. python爬虫+ffmpeg批量下载ts文件,解密合并成mp4

    标题 python爬虫+ffmpeg批量下载ts文件,解密合并成mp4 文章目录 标题 前言 一.分析目标 二.寻找url规律 三.写代码 总结 前言 (第一次写博客,写的不好请见谅哈~~) 目标是大 ...

  8. python批量下载文件-Python实现批量下载文件

    Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...

  9. python批量下载网页文件-Python实现批量下载文件

    Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...

最新文章

  1. ajax和jsonp没有半点关系,跨域问题
  2. C#把TextBox.Text的几万条数据按数据格式导出Excel报错:Insufficient memory to continue the execution of the program.
  3. Linux ps aux指令詳解--转
  4. 网站如何接入第三方登录,微信登录和QQ登录:注册认证篇
  5. win10 利用安装包 安装 ssh
  6. linux 加密工具办法
  7. java读取html文件内容的代码_【代码审计】xyhcms3.5后台任意文件读取
  8. 腾讯云首次披露虚拟化技术发展线路图,看好轻量级虚拟化的潜力
  9. win7 32位操作系统 ie8浏览器问题解决办法
  10. 【MyBean调试笔记】接口的使用和清理
  11. c语言编写面向对象的类
  12. java 清除所有 Session
  13. 计算几何小结 我对计算几何的理解以及叉积和点积
  14. 云控微信开发SDK使用教程--手机微信群聊信息变更通知服务端
  15. 一款软件界面的重要性
  16. 页高速缓存(page cache学习)
  17. c语言音频信号频谱分析,音频信号频谱分析(正文)-副本.pdf
  18. 推荐系统实践Task1:熟悉新闻推荐系统基本流程
  19. 软件开发中UI设计需要注意什么?
  20. Python渗透测试编程技术-拒绝服务攻击

热门文章

  1. 免工具下载微信视频号中视频,超简单
  2. RecyclerView实现横向滑动
  3. 【教程】Spire.PDF教程:C# 添加或删除 PDF 页面,调整页面顺序
  4. 通过PS制作逼真艺术具有中国风格的工笔画效果照片
  5. 大华摄像头获取yuv数据
  6. C 超级难搞定的 删除字符串中的子串
  7. 新概念英语1册55课
  8. mura问题这样破!一文看透破解方法中的OLED Demura
  9. CentOS7.9奶妈级教程安装Ansible AWX 17.1.0
  10. 如何解决Chrome首页被流氓网站劫持的问题