pandas to_csv - 不编码文件名或路径

时间:2018-04-26 20:39:43

标签: python pandas

如何将文件写入文件系统未编码的文件系统?

目前,撰写/myfolder/my file.csv变为/myfolder/my%20file.csv。我希望文件名为my file.csv

代码段:

rs = (grequests.get(u, headers=headers, stream=True, hooks={'response': addFilenameToResponse}) for u in urls)
sp_results = grequests.map(rs)

for res in sp_results:
   byteStream = io.BytesIO(res.content)
   result_df = pd.read_csv(byteStream, sep=",", encoding='utf8')
   outputloc = downloads_folder + res.filePathFull + '/' + res.filename
   outputloc = outputloc.replace('/', '\\') # switching for Windows 10
   result_df.to_csv(outputloc, index=False, encoding=None)
   ...

我已尝试将to_csv输出为encoding=None,但这不起作用。除此之外,the docs似乎没有显示任何其他方法。

问题是,我们还有另一个传统工具,我们会从文件名中读取,工具会对编码的文件名进行重新编码,从而生成/myfolder/my%2520file.csv%编码为%25)。

1 个答案:

答案 0 :(得分:1)

添加grequests部分似乎澄清了问题(与pandas无关)。

%20 is a url encoding for the space character。要删除它,您可以使用urllib.parse.unquote。在Python3中:

from urllib import parse

...

outputloc = parse.unquote(outputloc)
result_df.to_csv(outputloc, index=False, encoding=None)