import os
import requests
# 网址
url = "http://www.v3wall.com/wallpaper/1600_1200/0910/1600_1200_20091031110653466285.jpg"
# 保存目录
dir_path = "D://xin1"
# 文件名
file_name = os.path.join(dir_path, url.split('/')[-1])
try:
# 检查目录是否存在,不存在则创建
if not os.path.exists(dir_path):
os.makedirs(dir_path)
# 检查文件是否存在
if not os.path.exists(file_name):
response = requests.get(url)
# 写入文件
with open(file_name, 'wb') as f:
f.write(response.content)
print("文件保存成功")
else:
print("文件已存在")
except requests.RequestException as e:
print(f"网络请求错误: {e}")
except IOError as e:
print(f"文件操作错误: {e}")
except Exception as e:
print(f"未知错误: {e}")
下面是代码的思路解释: 1. **导入必要的模块**: - `os`模块用于处理文件和目录路径。 - `requests`模块用于发送HTTP请求。 2. **定义变量**: - `url`变量存储了图片的网络地址。 - `dir_path`变量指定了图片保存的本地目录路径。 - `file_name`变量是通过结合目录路径和图片文件名得到的完整文件路径。 3. **异常处理**: - 使用`try`语句块来捕获可能发生的异常,确保程序在遇到错误时不会直接崩溃。 4. **检查并创建目录**: - 使用`os.path.exists(dir_path)`检查指定的目录是否存在。 - 如果不存在,使用`os.makedirs(dir_path)`创建该目录。 5. **检查文件是否存在**: - 使用`os.path.exists(file_name)`检查文件是否已经存在于本地。 - 如果不存在,则继续下载图片。 6. **下载并保存图片**: - 使用`requests.get(url)`发送GET请求获取图片数据。 - 如果请求成功,使用`with open(file_name, 'wb') as f:`以二进制写模式打开文件,并将图片内容写入到该文件中。 7. **异常处理的具体分支**: - `requests.RequestException`用于捕获与网络请求相关的异常。 - `IOError`用于捕获与文件操作相关的异常。 - `Exception`用于捕获其他所有未预见的异常。 8. **输出结果**: - 根据不同的执行情况,打印出相应的成功或错误信息。