如何用Python检查URL文件是否存在并按序列规则上传新文件
实现步骤
1. 实现URL存在性检查函数
首先需要一个函数判断目标URL对应的文件是否存在,用requests库发送HEAD请求验证更高效:
import requests def is_url_exists(url): try: response = requests.head(url, allow_redirects=True) # 多数场景下200状态码代表文件存在,404代表不存在,可根据服务器规则调整 return response.status_code == 200 except requests.exceptions.RequestException: # 网络异常等情况默认视为文件不存在,可按需修改逻辑 return False
2. 生成可用的目标文件URL
编写逻辑从error.txt开始,依次尝试递增命名的URL,直到找到不存在的地址:
def get_available_target_url(base_url): # 拆分URL的路径前缀、文件名主体和后缀 url_prefix, filename = base_url.rsplit('/', 1) name_part, ext_part = filename.split('.', 1) current_url = base_url counter = 0 while is_url_exists(current_url): counter += 1 new_filename = f"{name_part}_{counter}.{ext_part}" current_url = f"{url_prefix}/{new_filename}" return current_url
3. 整合上传逻辑
将上述函数与你已有的上传函数结合,完成自动命名上传:
# 假设你的上传函数已定义 def upload(source, destination): # 这里替换为你实际的上传逻辑 print(f"已将文件 {source} 上传至 {destination}") # 示例调用 source_file = "C:\\DISK_D\\Work\\error.txt" base_target_url = "https://....//error.txt" # 获取可用的目标URL target_url = get_available_target_url(base_target_url) # 执行上传 upload(source_file, target_url)
注意事项
- 需提前安装
requests库:执行pip install requests即可 - 若服务器限制HEAD请求,可改用GET请求(但会下载文件内容,效率较低)
- 状态码判断需匹配实际服务器的响应规则,比如部分服务器可能返回403但文件实际存在,需针对性调整
内容的提问来源于stack exchange,提问作者LM10
相关产品推荐
相关产品推荐

