2016-08-10 193 views
3
I have a dataframe 
df = pd.DataFrame({'Data': [10, 20, 30, 20, 15, 30, 45]}) 

This is working : 
writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter') 
df.to_excel(writer, sheet_name='Sheet1') 
writer.save() 

but when I try 
out_path = "C:\Users\Bala\output\temp-excel.xlsx" 
writer = pd.ExcelWriter(out_path , engine='xlsxwriter') 
df.to_excel(writer, sheet_name='Sheet1') 
writer.save() 

我发现了错误:IO错误:[错误22]无效的模式( 'WB')或文件名:“C:\用户\巴拉纳德拉\输出\ TEMP-Excel中.xlsx等。写入数据帧到在给定的路径excel文件

如何在给定路径中创建文件。

+0

你应该添加你得到的错误。目录C:\ Users \ Bala \ output \是否存在? – user357269

+0

是的。这是我的盒子的本地目录,它适用于to_csv。 –

回答

4

String literals

研究该链接表。你需要用'\\'来逃避你的'\'。部分原因在于DOS对世界的这个混乱负责。

out_path = "C:\\Users\\Bala\\output\\temp-excel.xlsx" 

或者

out_path = r"C:\Users\Bala\output\temp-excel.xlsx" # the `r` prefix means raw string 

但最好的选择是这样的:

out_path = "C:/Users/Bala/output/temp-excel.xlsx" 

它会在任何平台上运行。


编辑删除与os.path.abspath解决方案。在回答下面的评论后,我自己阅读了文档,并意识到它有不同的目的。尽管过去我使用它来使我的代码具有双操作系统友好性,因为它将CWD整齐地附加到路径上,并且在从Debian移动到Windows时将/更改为\\,反之亦然。

+0

'os.path.abspath'是一个很好的功能,但是你完全误解了它的功能。它不能神奇地解释字符串中的字面反斜杠,并且这里完全不需要。老实说,**最好的**解决方案**是**使用正斜杠而不是反斜杠(即使在Windows中)。如果你坚持使用反斜杠,你应该使用*原始字符串*。 –

+0

你说得对。回答编辑。当我在我的机器上同时安装Windows和Ubuntu时,我曾经使用过它,并且需要相同的代码才能运行我的CWD中的文件。我发现它非常方便,但这不是解决这个问题的方法。 – Kartik

+1

良好的编辑,现在我觉得舒服upvoting这个答案。 –

2

在字符串中,反斜杠是转义字符。这意味着你在给一个特殊的命令,而不是一个普通的字符。例如。 "Hello\nWorld"表示在"Hello""World"之间插入换行符。

如果您确实想使用反斜杠作为字符,请将其输入为"\\"

或更好的是,只需使用正斜杠!

相关问题