imhamburger 님의 블로그
파이썬(Python) - {subprocess.py:93} INFO - cut: stdin: Illegal byte sequence 에러 해결하기 본문
파이썬(Python) - {subprocess.py:93} INFO - cut: stdin: Illegal byte sequence 에러 해결하기
imhamburger 2024. 7. 23. 18:29맥 터미널에서 아래와 같은 코드를 사용했는데, cut: stdin: Illegal byte sequence 에러가 났었다.
cat ~/data/test.txt | cut -d' ' -f1
이 에러는 터미널에서 UTF-8이 아닌 다른 종류의 인코딩된 데이터를 처리하려고 할 때 발생한다.
*UTF-8(Unicode Transformation Format - 8-bit)은 유니코드 문자 인코딩의 한 방식으로 UTF-8은 전 세계 모든 문자를 표현할 수 있도록 설계된 가변 길이 문자 인코딩 방식이다.
이를 해결하기 위해서는 터미널 창에 아래 코드를 입력하면 된다.
export LC_ALL=C
매번 같은 에러가 난다면, 영구적으로 설정할 수도 있다. ~/.zshrc 에 위에 코드를 추가하면 된다. 그럼 매번 터미널에 칠 필요가 없다.
그.런.데
터미널에서 파이썬 코드를 작성할 때에도 같은 에러가 났다. 나는 이미 .zshrc에 추가해두었는데 왜 자꾸 에러가 나는지... 이해할 수 가 없었다.
나같은 경우는 에어플로우를 이용하면서 해당 에러가 난 것인데...
cut: stdin: Illegal byte sequence 오류가 subprocess.py를 통해 발생하고 있다면, Python 코드 내에서 환경 변수를 설정하여 해결해야 한다고 한다. 파이썬 코드 위에 다음 코드를 작성해주면 된다.
이는 Python 코드에서 실행되는 모든 하위 프로세스에 영향을 주기 때문에 이 설정을 해주고 작성하면 에러를 해결할 수 있다.
import subprocess
import os
os.environ['LC_ALL'] = 'C'
근데 subprocess가 뭐지?
subprocess 모듈은 Python에서 외부 명령어나 프로그램을 실행하고, 그와의 상호작용을 가능하게 하는 모듈이라고 한다.
나는 python 코드 내에서 Bash 명령어를 사용하였어서 위와 같은 에러가 났던 것이고 subprocess 를 import해야 Bash 명령어를 읽어 실행 가능하게 도와준다.
매일 반복되는 에러발생...^^
'파이썬(Python)' 카테고리의 다른 글
파이썬(Python) - 디폴트 파라미터, *args, **kwargs (0) | 2024.07.29 |
---|---|
파이썬(Python) - argparse 이용하여 띄어쓰기 포함한 인자값 받기 (0) | 2024.07.26 |
파이썬(Python) - 패키지 설치하고 내가 만든 기능에 적용해보기 (0) | 2024.07.20 |
파이썬(Python) - pyenv virtualenv 이해와 직접 패키지 만들어 배포하기 (0) | 2024.07.18 |
파이썬(Python) - pyenv 설치, pdm 패키지, python 간단한 기능 구현하기 (1) | 2024.07.16 |