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

如何用Python的os.path.join将数据表存入指定子目录?

解决方案

你只需要两步就能实现把数据表保存到datasheets子文件夹:

  1. 先创建(确保存在)datasheets子目录
  2. 构建包含子目录的完整文件路径

另外注意你原代码里的一个小问题:for path in paths循环嵌套在了if value["data_sheets"] is not None:的代码块里,这会导致每次添加一个新路径到paths后,都会重新遍历整个paths列表,造成重复下载。建议把这个循环移到外层循环外面。

修改后的完整代码如下:

def get_datasheets(self, build_id):
    catalog = self._get_catalogue(build_id)
    paths = []
    for key, value in catalog.items():
        if "data_sheets" in value and value["data_sheets"] is not None:
            paths.append(value["data_sheets"]["data_sheet"])
    
    # 把循环移到外层,避免重复下载
    datasheets_dir = os.path.join(self._output_path, "datasheets")
    # 创建子目录,exist_ok=True确保目录已存在时不报错
    os.makedirs(datasheets_dir, exist_ok=True)
    
    for path in paths:
        media_url = "http://some_url.com:8000" + path
        print(media_url)
        # 解析URL提取数据表名称
        parsed_url = parse.urlsplit(media_url).path
        datasheet_name = parsed_url.split("/")[-1]
        response = requests.get(media_url)
        # 构建包含子目录的完整文件路径
        datasheet_path = os.path.join(datasheets_dir, datasheet_name)
        
        with open(datasheet_path, 'wb') as file:
            file.write(response.content)

关键修改点说明:

  • 用os.path.join(self._output_path, "datasheets")生成子目录路径
  • 调用os.makedirs(datasheets_dir, exist_ok=True)确保子目录存在,避免因目录不存在导致写入失败
  • 将for path in paths循环移到外层,避免重复下载同一文件
  • 最终文件路径改为os.path.join(datasheets_dir, datasheet_name),实现output_path_folder/datasheets_folder/datasheet_name的存储结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 14:56:28