개발 공부/파이썬 17

[파이썬] vscode에서 파이썬 버전 삭제했거나 path 변경했는데 에러 나는 경우 해결 방법

예전에 겪은 일인데, 파이썬 3.8을 사용해야하는데, 이전에 3.10 버전을 설치했어서 path 경로를 바꾸거나 3.10 버전을 삭제했는데도 계속 3.10 버전 방식으로 됐었다. 이해가 가지 않아서 찾아보니 vscode 화면에서 아랫줄에 보면 파이썬 인터프리터 버전이 나와있는데, 저걸 클릭하면 2번째 그림처럼 나온다. 여기서 자기가 사용하려는 버전을 클릭해서 변경해야하는데, 여기서 어이가 없는게 다른 버전을 삭제했어도 2번째 그림의 목록에는 삭제한 버전이 남아있다. 삭제한 버전을 클릭하면 목록에서 없어지더라...ㅡㅡ 나는 삭제하면 남아있는 버전으로 자동으로 변경되는 줄 알았는데, 변경되지 않고 그대로 남아있었다.. 이것 때문에 시간을 많이 날렸었다..ㅜ

[파이썬] 문자열 일부 파싱하기

다음과 같이 사용하면 문자열 일부를 파싱할 수 있다. [시작위치 : 끝위치] 이런 식으로 사용이 가능한데, 끝위치 인덱스 앞까지 출력된다. 예를 들어 123을 출력하고 싶으면 [0:2] 가 아니라 [0:3] 으로 해야한다. 끝위치 인덱스 값만 주의하면 된다. 음수 값을 활용해서 출력하는 것도 가능하다. 예를 들어 56을 출력하고 싶으면 [4:6]를 해도 되지만 [-2:] 또는 [-2:6]를 해도 된다. 음수로 하면 맨 끝자리 인덱스부터 -1,-2,-3, ... 으로 거꾸로 하면 된다.

[파이썬] 로그 파일 간단하게 만들기

아래 코드에서 setLevel 부분에서 ERROR(로그 레벨에 설명 있음)는 ERROR을 사용하거나 자기가 원하는 코드로 바꾸고, 로그 파일이 생성될 때 시간을 알기 위해 datetime.now()를 사용하고 FileHandler 부분에 경로명과 원하는 날짜 형식과 인코딩 형식을 정해서 사용하면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 import logging from datetime import datetime d = datetime.now() # 현재 년월일 logger = logging.getLogger() logger.setLevel(logging.ERROR) formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(..

[파이썬] shutil으로 파일 이동, 복사하기

shutil.move() 를 사용해서 파일을 옮길 수 있는데, 1번째 인자에는 경로명과 파일명까지 있는 문자열을 넣으면 되고 2번째 인자에는 폴더 경로를 문자열로 넣으면 된다. 만약 이동할 폴더 안에 같은 파일명이 존재하면 에러가 나니까 파일을 삭제하는 코드를 먼저 실행하고 해당 코드를 실행하는 방식으로 코드를 짜면 된다. 비슷한 함수로 shutil.move 말고 shutil.copy도 있는데 copy는 같은 파일명이 있어도 실행된다. 그리고 copy는 (당연한거지만)현재 위치에 파일이 그대로 남아 있고 이동할 폴더에 파일이 생성되는 방식이다.

[파이썬] open API로 xml 데이터 출력하기

프로젝트를 하면서 open API를 활용해서 xml로 된 데이터를 가져오는 작업을 했는데, json에 비해 상당히 번거로웠다. 웬만하면 json으로 하는게 나은거 같다. 아래 코드에서 url명에만 url을 넣어서 사용하면 데이터가 출력된다. (url은 사용하고 캡처 할 때만 url명으로 수정했습니다) 여기서 이제 필요한 데이터를 사용하려면 그림에 표시된 이름을 잘 활용해야한다. 예를 들어 '항목' 에 있는 주기 1999인 371.2 값을 출력하고 싶으면 이런 방식으로 활용하면 된다. xml과 관련된 함수는 find, findAll, get 등이 있는데, 이 3개를 주로 사용했다. get 함수를 이용해서 '열' 이라고 표시 되어 있는 것들을 findAll해서 1번째 '열'의 key 값인 주기를 활용해서 출..

[파이썬] open API로 json 데이터 출력하기

파이썬에서 open API로 데이터를 가져와서 csv 파일로 생성하는 작업을 했다. 아래 그림의 코드에서 url 변수에 url 값만 넣어서 사용하면 간단하다.(url 넣어서 실행하고 url명이라고 바꿨습니다.) 대괄호([ 데이터 ]) 로 되어 있으면 List(리스트) 이고, 중괄호({ 데이터 })로 되어 있으면 Dictionary(딕셔너리)이다. 출력해보면 리스트 안에 딕셔너리가 여러 개 있는 형식으로 되어 있기 때문에 1번째 데이터의 '경제성장률(시도)'가 필요하면 contents[0]['TBL_NM] 이런 식으로 사용하면 된다. 필요한 데이터를 TBL_NM 같은 key 값을 넣어서 찾는 방식으로 하는 것이다. for 문을 활용하면 전체 데이터도 출력해서 활용할 수 있다.