Python/Pandas
pandas의 read_csv 함수에 사용되는 경로 문자열 앞에 r을 붙이는 이유
webnautes
2023. 10. 9. 11:06
반응형
pandas의 read_csv 함수에 사용되는 경로 문자열 앞에 r을 붙이는 이유를 다룹니다.
2022. 12. 5 최초작성
read_csv 함수에 경로 문자열을 추가시 디렉토리 구분자로 \를 사용할 경우에 문제가 생길 수 있습니다.
디렉토리 이름이 n으로 시작하면 \n이 이스케이프 문자로 인식되어 문제가 되어 다음처럼 에러가 발생합니다.
import pandas as pd df = pd.read_csv('.\new\test.csv') |
Traceback (most recent call last): File "d:\code\Python\pandas_read_csv.py", line 4, in <module> df = pd.read_csv('.\new\test.csv') File "C:\Users\webnautes\miniconda3\envs\python39\lib\site-packages\pandas\util\_decorators.py", line 311, in wrapper return func(*args, **kwargs) File "C:\Users\webnautes\miniconda3\envs\python39\lib\site-packages\pandas\io\parsers\readers.py", line 680, in read_csv return _read(filepath_or_buffer, kwds) File "C:\Users\webnautes\miniconda3\envs\python39\lib\site-packages\pandas\io\parsers\readers.py", line 575, in _read parser = TextFileReader(filepath_or_buffer, **kwds) File "C:\Users\webnautes\miniconda3\envs\python39\lib\site-packages\pandas\io\parsers\readers.py", line 933, in __init__ self._engine = self._make_engine(f, self.engine) File "C:\Users\webnautes\miniconda3\envs\python39\lib\site-packages\pandas\io\parsers\readers.py", line 1217, in _make_engine self.handles = get_handle( # type: ignore[call-overload] File "C:\Users\webnautes\miniconda3\envs\python39\lib\site-packages\pandas\io\common.py", line 789, in get_handle handle = open( OSError: [Errno 22] Invalid argument: '.\new\test.csv' |
이 경우 다음처럼 경로 문자열 앞에 r을 추가해주면 문제가 해결됩니다. 에러가 발생하지 않습니다.
import pandas as pd df = pd.read_csv(r'.\new\test.csv') |
경로 문자열에서 디렉토리 구분자로 /를 사용할 경우에는 r을 적지 않아도 문제가 되지 않습니다.
import pandas as pd df = pd.read_csv(r'./new/test.csv') |
참고
https://stackoverflow.com/a/42655010/19664020
반응형