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

如何使用pandas to_csv写入不编码文件名的文件?解决路径转义问题

解决文件名URL编码(空格变%20)的问题

看起来你遇到的问题是文件名里的空格被自动转成了%20,没法保留原有的my file.csv格式。这通常是因为从响应中提取文件名时没处理URL编码,或者路径拼接的方式不对。下面是具体的解决步骤:

1. 修复文件名提取的钩子函数

首先检查你的addFilenameToResponse钩子——文件名是在这里附加到响应对象的,大概率是这里没对URL编码的文件名做解码。用urllib.parse.unquote可以把编码后的字符还原成原格式:

import urllib.parse

def addFilenameToResponse(response, *args, **kwargs):
    # 从Content-Disposition响应头提取文件名(根据实际格式调整逻辑)
    content_disposition = response.headers.get('Content-Disposition')
    if content_disposition:
        # 提取filename字段,去掉引号
        raw_filename = content_disposition.split('filename=')[1].strip('"')
        # 解码URL编码的字符(比如把%20转回空格)
        response.filename = urllib.parse.unquote(raw_filename)

如果你的文件名是从URL里提取的(比如取URL的最后一段),同样要解码:

from urllib.parse import unquote
import os

# 示例:从请求URL提取文件名
filename_from_url = unquote(os.path.basename(u))
response.filename = filename_from_url

2. 安全拼接输出路径

别直接用字符串相加拼接路径,改用os.path.join——它会自动处理路径分隔符,还能兼容带空格/特殊字符的文件名:

import os
import io
import pandas as pd

# 遍历结果保存文件
for res in sp_results:
    byteStream = io.BytesIO(res.content)
    result_df = pd.read_csv(byteStream, sep=",", encoding='utf8')
    # 用os.path.join拼接目录和文件名
    output_path = os.path.join(downloads_folder, res.filename)
    # 保存CSV,确保文件名正确
    result_df.to_csv(output_path, index=False, encoding='utf8')

这样处理后,文件名里的空格就能保留成my file.csv,不会再变成my%20file.csv了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:52:19