我正在使用Pandas进行数据分析。在其中一个程序中,我必须编写一个Excel表,并使用pd.to_excel()完成。这是在Ubuntu机器上执行的.
现在,我试图在Windows机器上读取写好的excel文件。我正在使用pd.read_excel()。
我得到了以下错误:
IOError: [Errno 22] invalid mode ('rb') or filename: 'C:\\Users\\Harshavardhan R\\Downloads\\Kerala Energy Project\\Bottom-Up Modelling\threshold variation\\outputs\x07c1.xlsx'消息来源是:
df = pd.read_excel('C:\Users\Harshavardhan R\Downloads\Kerala Energy Project\Bottom-Up Modelling\threshold variation\outputs\ac1.xlsx')我可以担保文件是存在的,因为我已经打开并检查了它。
为什么错误消息中的文件名更改为x07c1.xlsx?我怎样才能避免这个问题?
发布于 2016-11-29 15:38:02
您所得到的错误是因为Windows通常希望文件路径看起来(使用\),而不是Ubuntu期望它们(使用/)。
正如所写的,您的路径有逸出序列,特别是\t (选项卡)和\a (BEL)。
第二个问题是为什么要看到\x07c1.xlsx。\x07是BEL的ASCII表示。如果你仔细观察路径,你也会注意到一个隐藏的标签字符。当只有一个斜线而不是两个斜线时,就可以看出这一点:
\\Bottom-Up Modelling\threshold variation\\
^^ This is a tab, not a "t"你可以通过做几件不同的事情来解决这个问题。最简单的方法是使路径成为原始字符串。通过在字符串前面放置一个r来做到这一点:
df = pd.read_excel(r'C:\Users\Harshavardhan R\Downloads\Kerala Energy Project\Bottom-Up Modelling\threshold variation\outputs\ac1.xlsx')这样就可以从字面上读取字符串。注意:一个原始字符串不能以一个反斜杠结尾。
另一种选择是通过将每个反斜杠分成两部分来避免反斜杠:
df = pd.read_excel('C:\\Users\\Harshavardhan R\\Downloads\\Kerala Energy Project\\Bottom-Up Modelling\\threshold variation\\outputs\\ac1.xlsx')这是可行的,但要求您每次使用路径时都执行此步骤。
最后一种选择是使用正斜杠。Windows可以很好地处理正斜杠,只是这不是操作系统的标准约定
df = pd.read_excel('C:/Users/Harshavardhan R/Downloads/Kerala Energy Project/Bottom-Up Modelling/threshold variation/outputs/ac1.xlsx')就我个人而言,我会用原始的绳子。这是一个单一的字符,路径在您或其他开发人员看来并不“奇怪”。
https://stackoverflow.com/questions/40869167
复制相似问题