我正在从 url 下载 pdf 文件。网址列表采用 .csv 格式。以下代码有效。但是,由于我所有的 url 都以 /filename1.pdf 结尾,因此输出会写在先前下载的 filename1.pdf 之上。我有大约 15,000 个 url,但最终只有一个文件(文件名 1)。有没有办法可以将下载的 pdf 文件重命名为增量数字?
import os
import csv
import requests
os.chdir('C:\\Users\\dul\\Dropbox\\CTO\\ctos')
write_path = 'C:\\Users\\dul\\Dropbox\\CTO\\ctos\\'
with open('urls.csv', 'r') as csvfile:
spamreader = csv.reader(csvfile)
for link in spamreader:
print('-'*72)
pdf_file = link[0].split('/')[-1]
with open(os.path.join(write_path, pdf_file), 'wb') as pdf:
try:
# Try to request PDF from URL
print('TRYING {}...'.format(link[0]))
a = requests.get(link[0], stream=True)
for block in a.iter_content(512):
if not block:
break
pdf.write(block)
print('OK.')
except requests.exceptions.RequestException as e:
print('REQUESTS ERROR:')
print(e)
最佳答案
使用enumerate()
获取 csv
迭代器生成的每个项目的索引,然后在输出文件名前加上这个数字,使每个项目都是唯一的:
with open("urls.csv", "r") as csvfile:
for idx, link in enumerate(csv.reader(csvfile)):
print("-" * 72)
pdf_file = "{idx:05}_{link}".format(idx=idx, link=link[0].split('/')[-1])
print(pdf_file)
格式字符串的 {idx:05}
组件指示格式化程序将 idx
视为具有五个字符的宽度,并用零填充它。
结果:
------------------------------------------------------------------------ 00000_filename1.pdf ------------------------------------------------------------------------ 00001_filename1.pdf ...
关于python) output--download--file 到增量文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54890061/