使用requests.get下载文件时每次迭代自动递增文件名的实现方法
问题解决方法
语法错误原因
你遇到的
SyntaxError本质是前一行代码f.write(str(func(i))缺少1个闭合右括号,Python语法解析时括号不匹配,就会误判下一行代码存在语法错误。
原有代码的其他问题
xrange是Python2专属语法,Python3中请使用range替代- PDF属于二进制文件,不需要用
io.open指定utf-8编码,也不要将二进制内容转字符串写入,会直接损坏PDF文件 - 你写的10次循环逻辑不符合「每运行1次序号加1」的需求,你需要持久化存储序号值,否则程序每次重启都会从1开始计数,导致文件覆盖
完整可运行实现
import requests import os # 读取历史序号,无历史则初始化为0 count_file = "pdf_count.txt" if os.path.exists(count_file): with open(count_file, "r", encoding="utf-8") as f: current_count = int(f.read().strip()) + 1 else: current_count = 1 # 下载PDF文件 PDFurl = pdfGrab[0] resp = requests.get(PDFurl, allow_redirects=True) # 生成文件名,三种拼接方式选一种即可 file_name = f"testPDF{current_count}.pdf" # 其他可选写法: # file_name = "testPDF" + str(current_count) + ".pdf" # file_name = "testPDF_{}.pdf".format(current_count) # 写入本地文件 with open(file_name, "wb") as f: f.write(resp.content) # 存储当前最新序号 with open(count_file, "w", encoding="utf-8") as f: f.write(str(current_count))
实现说明
- 用本地TXT文件持久化存储序号,每次程序运行自动累加,不会出现重复文件名覆盖的问题
- 直接采用二进制模式
wb写入PDF文件,不会出现编码问题导致的文件损坏 - 文件名拼接推荐使用f-string写法,代码可读性更高
内容的提问来源于stack exchange,提问作者Kero
相关产品推荐
相关产品推荐

