解決pandas.read_csv()出現OSError:Initializing from file failed問題
阿新 • • 發佈:2019-02-18
在使用pandas.read_csv()讀取txt檔案時出現瞭如下異常:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 655, in parser_f
return _read(filepath_or_buffer, kwds)
File "D:\Anaconda3\lib\site-packages\pandas\io \parsers.py", line 405, in _read
parser = TextFileReader(filepath_or_buffer, **kwds)
File "D:\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 764, in __init__
self._make_engine(self.engine)
File "D:\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 985, in _make_engine
self._engine = CParserWrapper(self.f, **self.options)
File "D:\Anaconda 3\lib\site-packages\pandas\io\parsers.py", line 1605, in __init__
self._reader = parsers.TextReader(src, **kwds)
File "pandas\_libs\parsers.pyx", line 394, in pandas._libs.parsers.TextReader.__cinit__ (pandas\_libs\parsers.c:4209)
File "pandas\_libs\parsers.pyx", line 712, in pandas._libs.parsers.TextReader._setup_parser_source (pandas\_ libs\parsers.c:8895)
OSError: Initializing from file failed
百度了一下,有說因為pandas不支援讀中文檔名的csv檔案的,也有說是因為傳入的引數是檔案的路徑而非檔名的,但是經過排查和試驗,都沒能解決這個問題。
看了一下錯誤原因和pandas的原始碼,發現呼叫pandas的read_csv()方法時,預設使用C engine作為parser engine,而當檔名中含有中文的時候,用C engine在部分情況下就會出錯(在兩臺電腦上試了一下一臺出錯一臺沒問題,具體原因待分析)。
嘗試了一下在呼叫read_csv()方法時指定engine為Python,問題解決。