:: python 26

python :: shutil.copy 리눅스 네트워크 드라이브로 파일 복사 시 WinError 해결

파이썬 스크립트를 작성, 실행하여 로컬(Windows) -> 네트워크 드라이브(Z:)(Linux) 로 파일을 복사할 때 shutil.copy 부분에서 다음과 같은 에러가 나는 경우가 있다. [WinError 5] 액세스가 거부되었습니다: 'Z:\\..' [WinError 3] 지정된 경로를 찾을 수 없습니다: 'Z:\\' 확인해보니 실제 파일은 성공적으로 복사가 되어 있는데도 shutil.copy 부분에서 에러가 발생하는 경우가 나타났다. 1. 권한 설정 살펴보기 이럴 땐 우선 권한 설정을 살펴보아야 한다. [WinError 5] 액세스가 거부되었습니다 위 에러는 권한 문제가 있을 때 발생한다. 폴더의 보안 설정을 확인해보거나, 파이썬 스크립트 실행 시 cmd 를 관리자(Administrator) 권한으..

:: python 2021.12.30

python :: 파이썬 re 로 정규식 패턴 문자열 처리하기 (search/match/split/sub/compile)

re는 문자열 내 특정 패턴을 검색, 치환, 제거할 수 있는 파이썬 정규 표현식(Regular Expression) 라이브러리이다. re 가 패턴을 인식하는 방법은 다음과 같다. 1) 정규식 작성 : 특정 문자를 인식하기 위한 패턴을 정규식으로 작성한다. (내가 할 일) 2) re 에 정규식 적용 : 작성한 패턴을 re 에 적용시키면 re 는 이를 가지고 정규식 객체를 생성한다. 3) 패턴 감지 : 생성된 정규식 객체는 자동으로 문자열 내 해당 패턴을 감지할 수 있다. 즉, 내가 작성한 정규식을 토대로 문자열 내 패턴을 감지하는 것이다. 코딩하다보면 한 번 쯤은 꼭 정규식을 접하게 되는데 뭔가 더럽게(?) 생긴데다 규칙이 잘 외워지지도 않는다. (그런데도 패턴 인식에 있어서 정말 많이 사용되는 표현식이다..

:: python 2021.12.29

python :: list 형태의 string(문자열)을 list type 으로 변환하기

text1 = '["A", "B", "C"]' text2 = "['D', 'E', 'F']" text1, text2 모두 내용은 list 의 형태이나 데이터 타입은 string type 이다. 이 문자열 내용 그대로 list type 으로 변환시키고 싶을 때 아래와 같이 eval 을 사용하여 간단하게 변환할 수 있다. result = eval(text1) 끝 ^_^ 진짜 변환이 잘 되었는지 확인해보았다. print(result) # eval(text1) 결과 출력 # ["A", "B", "C"] print(type(eval(text1)) # eval(text1) 의 데이터 타입 출력 # 이렇게 하면 list 형태로 쓰여 있는 텍스트 파일에서 데이터를 불러올 때 유용하게 사용할 수 있다. 이 외에도 ast..

:: python 2021.12.22

python :: 회사 프록시(proxy) 환경에서 파이썬 패키지 다운로드, api 호출 성공하기

사내 프록시 서버가 있는 환경에서 개발하다보면 수많은 장벽을 만나게 된다(..) 그동안 프록시 때문에 수많은 뻘짓을 하며 알게 된 파이썬 관련 문제 해결방법들을 정리해보았다 :D 1. pip install. 패키지 설치 python -m pip install --upgrade {패키지명} --proxy {회사 프록시 서버 주소} --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org python package 설치할 때는 위 명령어를 사용한다. 1) 프록시 서버 주소를 설정하는 --proxy 옵션 외에 --trusted-host 도 함께 써주면 잘 된다. 2) pip install 로 설치하면 ..

:: python 2021.11.30

python :: 파이썬 Bytes to String 변환하기

파이썬 subprocess 라이브러리를 이용하여 리눅스 커맨드를 실행한 후 실행 결과 내용물을 받아왔다. (* 참고: https://toramko.tistory.com/11) String 형태로 받아올 것을 기대하고 코드를 짰더니 TypeError: must be str, not bytes TypeError 에러가 났다. String 이 아닌 Bytes 타입이라니..? subprocess 실행 후 받아온 결과를 찍어보았다. b'Hello Toramko.\n' 이렇게 'b' 로 시작되는 형태가 출력되었는데, 이는 String 이 아닌 Bytes 타입이다. 그렇다면 Bytes -> String 으로 변환하려면? sentence = str(sentence, "utf-8") 요렇게 해주면 된다. 매우 간단!

:: python 2021.11.18

python :: 파이썬 코드 실행 시간(elapsed time) 측정하기

파이썬 스크립트 내 특정 코드 실행 시간을 측정할 때 datetime 라이브러리를 사용하면 된다. from datetime import datetime start_time = datetime.now() # # 실행시간 측정을 원하는 코드 입력 # end_time = datetime.now() elapsed_time = end_time - start_time 이렇게 작성하고 실행시키면, 0:00:37.615328 이런 형태의 결과가 출력된다. 타입이 무엇인고 하니, 라고 한다. 이는 int 타입과 연산이 불가능하다. total_elapsed_time = 0 total_elapsed_time += elapsed_time # TypeError: unsupported operand type(s) for +=: ..

:: python 2021.11.14

python :: 파이썬 스크립트로 리눅스 명령어(command) 실행하기

리눅스 shell command 를 실행하는 파이썬 스크립트 작성 시 사용하는 라이브러리 두 가지가 있다. 1. os import os os.system('command') 위와 같이 간단하게 작성하면 실제 커맨드가 리눅스 서버에서 잘 실행된다. 하지만 실행 결과 내용물을 받아오는 건 잘 안된다. result = os.system('command') # 0 result 에 찍어보려 해봤자 int 형 숫자를 반환할 뿐이었다. (아마도 실행 결과코드일 것 같다. 0 은 커맨드 실행 성공 코드) 2. subprocess 커맨드 실행 결과 값을 받아오고 싶다면 subprocess 를 사용하는 게 낫다. import subprocess result = subprocess.check_output('command',..

:: python 2021.11.10

python :: 파이썬 zfill 로 문자열, 숫자 앞에 0 붙이기 (01, 002)

문자열이나 숫자 앞에 0을 붙여서 출력하고 싶을 때 (ex. 1 대신 '01', 2 대신 '002') 파이썬에서는 zfill 을 사용한다. # zfill(k) => 문자열 길이가 k가 될 때까지 0으로 채운다. "1".zfill(2) # "01" "2".zfill(3) # "002" 위와 같이 사용하면 되는데 여기서 중요한 점은 문자열(string) 에 사용한다는 점이다. 숫자 a는 str(a) 으로 문자열 변환 후 zfill 을 사용해야 한다. 숫자가 아닌 다른 문자열 앞에도 같은 방법으로 '0'을 붙일 수 있다. 위 내용을 활용하여 0~99 까지의 숫자를 00, 01, ..., 99 로 나타낸 리스트를 만들면 다음과 같다. aa = [str(i).zfill(2) for i in range(100)] ..

:: python 2021.06.30

python :: 파이썬 딕셔너리(dictionary) <-> json 변환하기, 딕셔너리 출력 포맷 '(홑따옴표) 대신 "(쌍따옴표) 로 나타내기

파이썬에서 REST api 요청 및 응답 처리를 위해 dictionary json 변환을 자주 한다. 이 때 json 라이브러리를 이용하면 간단히 변환할 수 있다. 1. json -> dictionary import json data = json.loads(json_data) # json_data: json 형식 데이터 2. dictionary -> json import json data = json.dumps(dic) # dic: dictionary 형식 data 2번의 경우 파이썬 딕셔너리의 포맷을 '(홑따옴표) 대신 "(쌍따옴표)로 변경할 때도 사용할 수 있다. import json dic = {'key1': 'value1', 'key2': 'value2'} print(json.dumps(dic))..

:: python 2021.06.29

python :: 파이썬 logging 활용하여 일단위 로그 파일 생성하기 (feat. 로깅이란)

개발을 하다 보면 에러가 자주 발생한다. (내가 짠 코드가 한 번에 잘 실행되면 불안할 정도..) 이 때, 에러의 원인을 찾기 위해 우리는 실시간으로 '로그'를 찍는다. (logging) 혹은 잘 돌고 있는지 확인하기 위해 찍기도 한다. 그런데 이 로그들을 파일로 기록해야 할 때가 있다. - 로그량이 너무 많아서 확인이 어려울 때 - 매 시간 로그를 들여다보기 어려울 때 (ex. 프로젝트가 운영 단계에 접어들어 24시간 내내 돌기 시작한 경우) 이럴 때 'logging' 을 이용하여 로그를 파일로 남겨 나중에 천천히 확인할 수 있다. 1. Logger 선언, 출력 형식 지정 import logging logger = logging.getLogger(__name__) logger.setLevel(loggi..

:: python 2021.06.28
300x250