如何用Python的os.path.join将数据表存入指定子目录?
解决方案
你只需要两步就能实现把数据表保存到datasheets子文件夹:
- 先创建(确保存在)
datasheets子目录 - 构建包含子目录的完整文件路径
另外注意你原代码里的一个小问题: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
相关产品推荐
相关产品推荐

