You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python读取/下载URL中未知全名的CSV文件

解决远程CSV文件的读取/下载问题(未知全名)

错误原因

glob(包括glob2)仅能处理本地文件系统路径,无法解析远程HTTP/HTTPS URL的文件列表。你用它匹配远程路径时,返回的是空列表,取[0]自然会触发IndexError: list index out of range。

解决方案:先获取目标文件的完整URL

目标服务器目录下仅有CSV文件,且命名格式固定为Data_Feed_YYYYMMDD_xxxx_EST.csv,我们可以先爬取目录页面内容,筛选出符合日期的文件,再进行读取或下载。

方案1:直接读取远程CSV文件

import pandas as pd
import requests
import re

date = "20230525"
base_url = "https://internalurl.net/Data/"
# 获取目录页面内容
response = requests.get(base_url)
response.raise_for_status()  # 请求失败直接抛出错误

# 正则匹配符合格式的文件名
pattern = rf"Data_Feed_{date}_\d+_EST\.csv"
match = re.search(pattern, response.text)

if match:
    target_file = match.group()
    full_url = base_url + target_file
    # 直接读取CSV内容
    data = pd.read_csv(full_url, header=0, skip_blank_lines=False)
    print(data)
else:
    print(f"未找到日期为{date}的CSV文件")

方案2:下载远程CSV文件到本地

import requests
import re

date = "20230525"
base_url = "https://internalurl.net/Data/"
save_path = "./target_data.csv"

response = requests.get(base_url)
response.raise_for_status()

# 正则匹配目标文件名
pattern = rf"Data_Feed_{date}_\d+_EST\.csv"
match = re.search(pattern, response.text)

if match:
    target_file = match.group()
    full_url = base_url + target_file
    # 下载文件
    file_response = requests.get(full_url)
    file_response.raise_for_status()
    
    with open(save_path, "wb") as f:
        f.write(file_response.content)
    print(f"文件已保存至:{save_path}")
else:
    print(f"未找到日期为{date}的CSV文件")

补充说明

  • 如果服务器返回的文件列表不是标准HTML(比如JSON格式),只需调整解析逻辑,核心思路仍是获取文件名→拼接完整URL→操作文件。
  • 若服务器需要身份验证,在requests.get中添加auth参数即可,例如auth=("你的用户名", "你的密码")。

内容的提问来源于stack exchange,提问作者sb92

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 09:27:26