首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows下读取Ubuntu机器上的excel文件时出错(使用Pandas)

在Windows下读取Ubuntu机器上的excel文件时出错(使用Pandas)
EN

Stack Overflow用户
提问于 2016-11-29 15:06:20
回答 1查看 1.1K关注 0票数 2

我正在使用Pandas进行数据分析。在其中一个程序中,我必须编写一个Excel表,并使用pd.to_excel()完成。这是在Ubuntu机器上执行的.

现在,我试图在Windows机器上读取写好的excel文件。我正在使用pd.read_excel()

我得到了以下错误:

代码语言:javascript
复制
IOError: [Errno 22] invalid mode ('rb') or filename: 'C:\\Users\\Harshavardhan R\\Downloads\\Kerala Energy Project\\Bottom-Up Modelling\threshold variation\\outputs\x07c1.xlsx'

消息来源是:

代码语言:javascript
复制
df = pd.read_excel('C:\Users\Harshavardhan R\Downloads\Kerala Energy Project\Bottom-Up Modelling\threshold variation\outputs\ac1.xlsx')

我可以担保文件是存在的,因为我已经打开并检查了它。

为什么错误消息中的文件名更改为x07c1.xlsx?我怎样才能避免这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-29 15:38:02

您所得到的错误是因为Windows通常希望文件路径看起来(使用\),而不是Ubuntu期望它们(使用/)。

正如所写的,您的路径有逸出序列,特别是\t (选项卡)和\a (BEL)。

第二个问题是为什么要看到\x07c1.xlsx\x07BEL的ASCII表示。如果你仔细观察路径,你也会注意到一个隐藏的标签字符。当只有一个斜线而不是两个斜线时,就可以看出这一点:

代码语言:javascript
复制
\\Bottom-Up Modelling\threshold variation\\
                     ^^ This is a tab, not a "t"

你可以通过做几件不同的事情来解决这个问题。最简单的方法是使路径成为原始字符串。通过在字符串前面放置一个r来做到这一点:

代码语言:javascript
复制
df = pd.read_excel(r'C:\Users\Harshavardhan R\Downloads\Kerala Energy Project\Bottom-Up Modelling\threshold variation\outputs\ac1.xlsx')

这样就可以从字面上读取字符串。注意:一个原始字符串不能以一个反斜杠结尾。

另一种选择是通过将每个反斜杠分成两部分来避免反斜杠:

代码语言:javascript
复制
df = pd.read_excel('C:\\Users\\Harshavardhan R\\Downloads\\Kerala Energy Project\\Bottom-Up Modelling\\threshold variation\\outputs\\ac1.xlsx')

这是可行的,但要求您每次使用路径时都执行此步骤。

最后一种选择是使用正斜杠。Windows可以很好地处理正斜杠,只是这不是操作系统的标准约定

代码语言:javascript
复制
df = pd.read_excel('C:/Users/Harshavardhan R/Downloads/Kerala Energy Project/Bottom-Up Modelling/threshold variation/outputs/ac1.xlsx')

就我个人而言,我会用原始的绳子。这是一个单一的字符,路径在您或其他开发人员看来并不“奇怪”。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40869167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档