try except 에러라인 출력하기파이썬에서는 try except로 예외 오류 처리를 함으로써 프로그램이 정지되지 않고 무사히 끝내는 장치가 마련되어 있습니다. 에러를 넘기고 무사히 프로그램을 끝낼 수 있어서 너무 좋은데 프로그램 고도화를 위해서는 에러를 일으키거나 어떤 에러가 주로 나오는지 알고 있어야 합니다.이번 포스팅에서는 try except를 이용해 에러를 일으키고 에러라인을 출력하는 방법에 대해 알아보도록 하겠습니다.에러 일으키기파이썬에서 try와 except 블록을 사용할 때, except 블록에서 에러를 다시 발생시키려면 raise 를 사용할 수 있습니다. 이렇게 하면 현재 예외를 다시 던져서 상위 호출 스택으로 전달할 수 있습니다. 나눗셈시 0으로 무언가를 나누면 에러가 발생합니다. 이런..
DtypeWarning 잘 불러오던 csv가 간혹 DtypeWarning 이라고 경고가 뜹니다. DtypeWarning: Columns (37,66) have mixed types. Specify dtype option on import or set low_memory=False. 특정 컬럼의 type이 섞여있어서 결정할 수 없다고 합니다. 그럼 다 object로 하지 않았나? 왜저러는걸까? 싶은데 컴퓨터가 인식을 그렇게한다니까 어떻게 할 수 있는 건 아닌 것 같습니다. 저 경고를 무시하고 코딩실행을 하니깐 확실히 작업속도가 현저히 느려졌습니다. 메모리 도둑이 따로없네요. 해결방법 해결방법은 두가지입니다. (1) 문제가 되는 컬럼의 타입을 정해준다 (2) csv에 쓰는 메모리 제한을 없애서 csv를 한번..
conda 작업을 할 때 아래와 같은 오류가 뜰 때가 있습니다. Solving environment: failed with initial frozen solve. Retrying with flexible solve. 주로 무엇을 설치하다가 위 오류처럼 뜨고 안 되는데 기다리면 conda에서 알아서 다른 방법으로 여러번 시도를 합니다. 그러다가 잘 설치가 완료되면 좋을텐데 안될 수 있습니다. 그 원인은 아래 내용을 확인하시기 바랍니다. 오류 원인 및 해결 방법 위 오류가 무사히 넘어가지 않아 모듈 설치가 안 되었다면 conda가 최신 버전이 아닌가? 를 생각하면 됩니다. 보통 conda를 모듈 사용하는 도구로써 사용하기 때문에 최근에 새로만든 모듈이거나 패키지라면 예전 버전의 conda와의 호환이 안 될 ..
파이썬에서 정규표현식을 썼는데 TypeError : expected string or bytes-like object 라는 오류가 뜨는 경우가 있습니다. 이 오류가 뜨는 이유는 정규표현식은 문자열에서만 가능하기 때문에 그렇습니다. 찾는 대상이 문자열이어야 하는데 그렇지 않다고 오류가 나오는 것입니다. 원인이 명확하니 해결방법도 간단합니다. 대상을 문자열로 바꿔주면 됩니다. 이메일을 찾는 정규표현식으로 예를 들겠습니다. 아래와 같이 코드에는 email 리스트가 안에 2개의 이메일이 있습니다. re_email 로 이메일을 찾는 정규표현식을 만들어 search를 실행하니 에러가 뜰겁니다. 왜냐하면 email은 문자열이 아니기 때문입니다. email = ['a','b','asdf@gmail.com','ewqr@..
데이터프레임을 하다가 나타나는 오류입니다. 딕셔너리로 데이터프레임을 만들 때 value 값이 스칼라 값이라서 생기는 문제입니다. 인덱스를 따로 설정해주거나 스칼라 값을 리스트에 넣으면 해결됩니다. 에러발생 다음과 같이 데이터프레임을 만들면 에러가 발생합니다. pd.DataFrame({'col1':1,'col2':2}) 해결방안1 첫번째 해결방안은 value 값을 리스트로 바꿔서 입력합니다. pd.DataFrame({'col1':[1],'col2':[2]}) 해결방안2 두번째 해결방안은 index를 설정합니다. 인덱스는 아무거나 설정하면 됩니다. pd.DataFrame({'col1':1,'col2':2},index=[0]) 인덱스를 변경해도 됩니다. pd.DataFrame({'col1':1,'col2':2..
쥬피터를 켠 상태에서 컴퓨터를 꺼버려서 원본 파일에 손상이 일어났습니다. 제가 작업하려고 import 한 모든 라이브러리가 사라졌습니다. 쥬피터는 켜지지도 않고 '~~~ 손상된 파일이 복구되었습니다. ~~~' 는 형식의 오류창만 뜨고 있습니다. 일전에도 이런 적이 있어서 아나콘다를 다시 까는 불상사가 일어났었는데 또 다시 아나콘다를 깔아야한다니ㅜ 그 동안 설치한 라이브러리 목록을 백업해두지 않았는데 큰일났습니다. 해당 가상환경을 지우지 않고 해결하는 방법은 없을까 싶어 혹시나 하고 구글링을 해보니 저와 비슷한 처지였던 사람들이 있더군요. 다행히 해결방법이 있었습니다. 이 사이트에서 얻을 수 있었는데요. 사실 저와 똑같은 상황은 아닙니다. 해당 사이트는 Clobber 대상이 일정 라이브러리에서만 나왔는데 ..
cmd에서 pip으로 설치를 할 때 Ignoring invalid distribution -ip 이라는 메세지가 뜹니다. 이건 ~으로 이루어진 폴더 때문인데 임시폴더를 만들어놨는데 아직 지우지 않았거나 이름이 잘못 배정되어 있는 경우에 저런 폴더가 나타납니다. 그래서 유효하지 않는 값을 무시하겠다고 메세지가 뜨는 겁니다. 작업을 진행하는데 아무 지장은 없지만 신경이 쓰인다면 해당 폴더에 가서 '~'로 시작하는 폴더를 지우면 됩니다. 해당 폴더를 가보았더니 ~ip 와 ~ip-20.1.1-py3.6.egg-info 라는 폴더가 있었습니다. 해당 폴더를 지우면 Ignoring invalid distribution -ip 라는 오류가 나오지 않게 됩니다.
작업스케쥴러를 이용해 .py를 실행시키면 cmd창이 바로 꺼져서 오류확인을 못하는데 이거를 확인하려고 코딩에다 input()나 pause를 걸어놓아도 .py파일 자체의 오류 때문에 훅 꺼집니다. 희한하게도 파이참이나 cmd에서는 실행하면 되는데 작업 스케쥴러에서 실행시키면 안 되는 경우가 있는데 이런 경우에 작업스케쥴러에 배치파일로 적용해 오류를 확인하는 방법입니다. 말 그대로 오류확인용입니다. 작업스케쥴러에서 프로그램/스크립트에 실행파일을 pythonw.exe로 실행시키면 cmd 창이 나오지 않고 실행이 되어서 편합니다. 배치파일을 이용하면 cmd창은 무조건 나오는 거라서 약간 불편하기는 합니다. 아무튼 저는 배치파일를 오류날때만 오류확인용으로 쓰지만 배치파일로 만드셔서 실행시키는 분도 있을테니 이 방..
파이참을 처음 실행하거나 새로운 프로젝트를 새로운 폴더에서 실행하게 되면 'Windows Defender might impact performance' 가 메세지로 뜹니다. 말인 즉슨, 윈도우 디펜더에서 해당폴더를 스캔하는걸 제외하라는 얘기입니다. Exclude directories를 눌러도 파이참을 켤 때마다 다시 메세지가 나옵니다. Don't show again을 누르면 메세지는 안 나오긴 하지만 뭔가 꺼림직해서 파이참에서 요구한대로 해보겠습니다. 메세지에 나온 폴더를 일일히 제외 항목으로 넣어주면 됩니다. 제외 사항 추가하기 1. 디펜더를 가기 위해 windows 검색에서 windows 보안으로 들어갑니다. 2. 바이러스 및 위협 방지로 이동합니다. 3. 바이러스 및 위협 방지 설정에서 설정관리를 ..
어느순간 jupyter의 Tap 기능이 안되서 애를 먹고 있었는데 어느 분께서 stackoverflow에 올린 질문글이 있더군요 덕분에 해결방법을 찾았습니다. https://stackoverflow.com/questions/40536560/ipython-and-jupyter-autocomplete-not-working IPython and Jupyter autocomplete not working I am very new to this and I have no idea why the autocomplete is not working. I tried modifying the ipython config file, installed readline, but still nothing. Help! stackove..
jupyter에서 출력을 하려고 실행을 했더니 'IOPub data rate exceeded' 라 하면서 뒤에 주저리주저리 뭐가 붙는 경우가 있습니다. 출력 데이터 rate 초과시 발생하는 오류인데 Juptyer의 환경설정에서 고칠 수 있습니다. 'NotebookApp.iopub_data_rate_limit = 1000000' 으로 써져있는 곳을 바꾸면 되는데 복잡합니다. 임시방법 먼저 임시적인 방법을 알려드리겠습니다. 쥬피터 노트북 터미널을 켜서 jupyter notebook --NotebookApp.iopub_data_rate_limit=1.0e10 을 입력합니다. 그러면 jupyter가 새로 켜지고 다시 실행을 시키면 잘 되는 것을 볼 수 있습니다. 환경설정 변경 환경설정 자체를 건드려 보겠습니다...
가끔 옆에 autosavefailed 가 뜨고 저장버튼을 누르면 아래와 같이 나올 때가 있습니다. 이럴 때는 파일이 잘못됐거나 jupyter 버전이 너무 낮아서 생길 수 있어요~! 오류가 발생했다면 일단 prompt에서 다음 코드를 쳐서 update를 해줍시다. conda update jupyter 그래도 안 되면 다른 파일은 저장이 되는지 확인해봅니다. 저장을 누르면 보면 Last Checkpoint 가 나와야 하는 게 정상입니다. 그런데 어느 파일은 나오고 어느 파일은 안 나온다면 오류가 뜨는 해당 ipyb파일손상으로 오류가 발생할 가능성 큽니다. mac에서 windows로 옮길때 파일 손상이 일어날 수도 있고(파일 이름이 한글인 경우 한글이 깨져서 전송됨) 컴퓨터를 하다가 잘못 덮어씌어진 경우도 있..
가끔 파이썬을 실행하려고 하면 python37.dll 이 없어서 실행이 안 된다는 에러가 뜹니다. 어떤 이유인지 모르지만 파일손상이나 제거가 되서 생기는 현상이라서 다시 파이썬을 다시 깔면 정상작동합니다. 그런데 그건 너무 번거로우니 python37.dll 을 백업하고 있던지 해서 system 폴더에 넣으면 다시 파이썬이 실행됩니다. 안되면 다른 문제도 겹치는 거니 다시 원인을 찾고 해결을 하던지 새로 깔던지 결정해야겠지만요... 이 파일은 파이썬 3.7.6 버전을 기준으로 된 백업파일입니다. 아니면 다른 걸 찾아보시는 걸 추천합니다. 이 파일을 어떻게 하느냐 하면 두 폴더에 넣으면 됩니다. C:\windows\system32\ (32bit) C:\windows\Syswow64\ (64bit) 위 폴더에..