txt文档如图:
思路:
1、逐行读取文档中每一个链接
2、request请求通过get方式获取链接内容
3、将获取的内容以图片格式保存到本地
踩坑备忘:
1、获取文档内的某行内容可使用readline()方法:
操作文件的三个函数read(),readline()以及readlines():
- .read() 每次读取整个文件,它通常将读取到底文件内容放到一个字符串变量中,也就是说 .read() 生成文件内容是一个字符串类型。
- .readline()每只读取文件的一行,通常也是读取到的一行内容放到一个字符串变量中,返回str类型。
- .readlines()每次按行读取整个文件内容,将读取到的内容放到一个列表中,返回list类型。
f = open("C:/Users/11206/Desktop/a.txt") # 返回⼀个⽂件对象
line = f.readline() # 调⽤⽂件的 readline()⽅法
2、逐行读取可使用while函数,将每一行内容循环赋值给变量
3、循环时先请求再访问下一行,否则会有一次请求没有readline的值,导致请求报错且缺少第一行的文件
line = f.readline()
while line:
response = requests.get(url=line)
line =f.readline()
4、图片名称可使用参数或随机数命名,避免生成同名文件,内容被覆盖
python3中%d表示将参数格式化为整数。使用%d时可以在“d”前加数值来设置参数格式化后整数的位数。
i=1
print("%d.jpg" % i) #参数的用法
with open("C:/Users/11206/Desktop/BCP/%d.jpg" % i, 'wb') as m: #生成在指定路径下
with open("C:/Users/11206/Desktop/BCP/%d.jpg" % i, 'wb') as m: #生成在python文件同级目录下
完整代码:
#-*- coding: UTF-8 -*-
import requests
f = open("C:/Users/11206/Desktop/a.txt") # 返回⼀个⽂件对象
line = f.readline() # 调⽤⽂件的 readline()⽅法
i=0
while line:
i += 1
print(line)#第一行
response = requests.get(url=line)
line =f.readline()
print(line)#下一行
with open("C:/Users/11206/Desktop/%d.jpg" % i, 'wb') as m:
m.write(response.content)
f.close()
print("ok")
运行结果:
本地: