在使用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:\Anaconda3\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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
百度了一下,有说因为pandas不支持读中文文件名的csv文件的,也有说是因为传入的参数是文件的路径而非文件名的,但是经过排查和试验,都没能解决这个问题。
看了一下错误原因和pandas的源码,发现调用pandas的read_csv()方法时,默认使用C engine作为parser engine,而当文件名中含有中文的时候,用C engine在部分情况下就会出错(在两台电脑上试了一下一台出错一台没问题,具体原因待分析)。
尝试了一下在调用read_csv()方法时指定engine为Python,问题解决。