Python 3.6.0 |Anaconda 4.3.1 (64-bit)| (default, Dec 23 2016, 11:57:41) [MSC v.1900 64 bit (AMD64)] on win32
>>> pd.__version__
'0.20.1'
>>> import platform
>>> platform.platform()
'Windows-7-6.1.7601-SP1'
>>> import pandas as pd
>>> df = pd.read_csv(r'c:\tmp\ไธญๆ.csv')
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2881, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-6-0cd6317422e5>", line 1, in <module>
df = pd.read_csv(r'c:\tmp\ไธญๆ.csv')
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 655, in parser_f
return _read(filepath_or_buffer, kwds)
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 405, in _read
parser = TextFileReader(filepath_or_buffer, **kwds)
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 762, in __init__
self._make_engine(self.engine)
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 966, in _make_engine
self._engine = CParserWrapper(self.f, **self.options)
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 1582, 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
python 3.6์ "mbcs" ๋์ "utf-8"์ ๋ฐํํ๋๋ก sys.getfilesystemencoding()์ ๋ณ๊ฒฝํ์ต๋๋ค.
PEP 529๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์ฌ๊ธฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค: parsers.pyx
if isinstance(source, basestring):
if not isinstance(source, bytes):
source = source.encode(sys.getfilesystemencoding() or 'utf-8')
์์ค ๋งค๊ฐ๋ณ์๋ ํ์ผ ์ด๋ฆ์ด๋ฉฐ python 3.6์ ๋ ๊ฑฐ์ 'mbcs'๊ฐ ์๋ 'utf-8'๋ก ์ธ์ฝ๋ฉ๋ฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก io.c:new_file_source์ open()์ ์ ๋ฌ
๋ฐ๋ผ์ mbcs ๋ฌธ์์ด๋ก ํด์๋๋ฏ๋ก "ํ์ผ์ ์ฐพ์ ์ ์์" ์์ธ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
์๋ง๋ ์ด๊ฒ์ python 3.6์ด Windows API์ ์ ๋์ฝ๋ ๋ฒ์ ์ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ๊ฒ๋ค์ ์ฒ๋ฆฌํ๊ธฐ ์ํ cython์ ์ฑ
์์ด์ด์ผ ํฉ๋๋ค.
ํ์ง๋ง ์ง๊ธ์ sys.getfilesystemencoding()์ "mbcs"๋ก ๋์ฒดํฉ๋๋ค.
์๋๊ฐ ์ ํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
ํ์ด์ฌ df = pd.read_csv(r'c:tmpไธญๆ.csv', engine='ํ์ด์ฌ' )
๊ทธ๋ฌ๋ ๋ชจ๋ ํ๋ก์ ํธ์์ read_csv์ ๋ํ ๋ชจ๋ ๋จ์ผ ํธ์ถ์ ์์ ํ๋ ๊ฒ์ ๋๋ฌ์ด ์์ ์ ๋๋ค.
์ด๊ฒ์ ์ด๊ฒ์ ๋ณต์ ๋ณธ์ ๋๋ค: https://github.com/pandas-dev/pandas/issues/15086
PR์ด ์ฒจ๋ถ๋์์ง๋ง ๋ถํํ๋ ๋ ์๊ฐ์ต๋๋ค.
ํ์คํ ์ด๊ฒ์ ๋ํ ์์ ์ ์ทจํ ๊ฒ์ ๋๋ค.
ํ์ผ ์ด๋ฆ์ ์ค๊ตญ์ด ์ด๋ฆ์ ์ฌ์ฉํ์ง ๋ง๊ณ ์์ด๋ก ๋ณ๊ฒฝํ์ญ์์ค.
ํ์ผ ์ด๋ฆ์ ์ค๊ตญ์ด๋ฅผ ์ฌ์ฉํ์ง ๋ง๊ณ ์์ด๋ก ๋ณ๊ฒฝํ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋๊ฐ ์ ํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
ํ์ด์ฌ df = pd.read_csv(r'c:tmpไธญๆ.csv', engine='ํ์ด์ฌ' )
๊ทธ๋ฌ๋ ๋ชจ๋ ํ๋ก์ ํธ์์ read_csv์ ๋ํ ๋ชจ๋ ๋จ์ผ ํธ์ถ์ ์์ ํ๋ ๊ฒ์ ๋๋ฌ์ด ์์ ์ ๋๋ค.