大家好,本文将围绕python编程案列教程展开说明,python编程简单案例是一个很多人都想弄明白的事情,想搞清楚python简单案例代码需要先了解以下几个事情。
需求说明
将服务器上的文件(动物图片)批量下载到本地,并保留服务器上的目录结构。
一个很好的下载方法是:将服务器上的文件压缩为一个压缩包,然后直接下载一个压缩包到本地即可。 该方案缺点:压缩后的压缩包过大,如果下载中断则需重头开始下载。
服务器上文件目录
在服务器的 /home/work
目录下有如下数据:
animals
--train
|--dog
|--
|--
|--......
|--cat
|
|
|--......
--valid
|--dog
|--......
|--cat
|--......
--test
|--dog
|--......
|--cat
|--......
解决方案
批量生成要下载图片的目录结构
在服务器端切换到 /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
浏览器访问 http://server_ip:8811/
即可看到如下目录结构:
如下即为要下载的文件:下载链接即为
遍历 animals 目录,批量生成要下载的文件目录结构:
import os
# 遍历文件夹
def iter_files(rootDir):
# 遍历根目录
for root, dirs, files in (rootDir):
for file in files:
file_name = (root,file)
file_name = file_name.replace('/home/work/animals/', '')
print(file_name)
# 将要下载的图片路径写入文件
with open('', 'a') as f:
f.write(file_name + '\n')
# 调用方法
iter_files('/home/work/animals/')
生成的 内容如下:
......
......
拼接 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('') as f:
# 读取所有图片在服务器的存放路径
arr = f.readlines()
for name in arr:
# 去除末尾的换行符
name = name.strip()
# 拼接。服务器上的 url。
url = baseurl + '/' + name # 拼接后示例:
# 截取第一个 / 到后面的所有内容
path = name[name.index('/'):]
# 拼接。本地存放路径
out_path = basepath + path # 如
# 截取目录,创建父级目录
file_path = out_path[:out_path.rindex('/')]
# 如果目录不存在,则创建
if not .exists(file_path):
os.mkdir(file_path)
# print('server url = ', url)
print('out_path = ', out_path)
# 下载文件到本地
# 如果文件不存在,则下载
if not .exists(out_path):
re_down(url, out_path)
原文地址1:https://blog.csdn.net/weixin_46034990/article/details/125944650
参考资料:python中用turtle画一个圆形 https://blog.csdn.net/SXIAOYAN_/article/details/140061099