1. 程式人生 > >解決pandas.read_csv()出現OSError:Initializing from file failed問題

解決pandas.read_csv()出現OSError:Initializing from file failed問題

在使用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,問題解決。