2

ExcelFile() を使用して Excel ファイルをデータフレームにロードする際に問題が発生しました。パンダ、xlrd、openpyxl をインポートしました。インタラクティブなデータ分析にスパイダーを使用しています。私はパンダとパイソンが初めてなので、初心者にもわかりやすい答えをいただければ幸いです。誰かが私を助けることができますか?

>>> import xlrd
>>> import openpyxl
>>> from pandas import *
>>> xls = ExcelFile('C:\RWFC\test.xls')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\pandas\io\parsers.py", line 1294, in __init__
self.book = xlrd.open_workbook(path_or_buf)
File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 400, in open_workbook
f = open(filename, "rb")
IOError: [Errno 22] invalid mode ('rb') or filename: 'C:\\RWFC\test.xls'
4

2 に答える 2

4

問題は次の行にあります。

>>> xls = ExcelFile('C:\RWFC\test.xls')

バックスラッシュには特別な意味があります。たとえば、通常の文字列の文字 "\t" はタブ文字です。

>>> "\t"
'\t'
>>> len("\t")
1

そのため、エラー メッセージに次のように表示されます。

IOError: [Errno 22] invalid mode ('rb') or filename: 'C:\\RWFC\test.xls'

R--の前に二重スラッシュが表示されます\Rが、特別な意味はありません。したがって、「実際の」スラッシュが 1 つあることを認識していました。

>>> s = "\\"
>>> s
'\\'
>>> print s
\
>>> len(s)
1

しかし\t、特別な意味があります。この問題を解決するには、「生の文字列」を使用して、文字列リテラルの前に「r」を追加します。

>>> "C:\RWFC\test.xls"
'C:\\RWFC\test.xls'
>>> r"C:\RWFC\test.xls"
'C:\\RWFC\\test.xls'

または、代わりに単純にスラッシュ (Windows でサポートされている) を使用して、すべての問題を回避できます。

>>> "C:/RWFC/test.xls"
'C:/RWFC/test.xls'

どちらの方法でも機能するはずです。

于 2013-03-28T12:38:06.277 に答える