본문 바로가기

개발/Python

(25)
Github Actions을 이용한 ECS 배포 자동화 backend : Python Django Dockerfile을 기반으로 Docker image를 빌드하여 ECS Fargate를 이용해 배포한다. * 원래는 .env 에 환경변수를 저장해 os.environ.get(변수) 로 가져왔는데, .env 파일은 깃허브에 올리지 않기 때문에 깃헙 액션에서 빌드-배포를 할때 변수 값을 Github Actions Secrets 사용해 넣어주고 Dockerfile과 yml 파일에서 이미지 빌드 시 해당 변수를 받아올 수 있도록 했다. FROM python:3.9-alpine COPY frontend /code/backend/frontend/ COPY ./backend/ /code/ WORKDIR /code COPY --from=FRONTEND /code/backend..
GCP 버킷 안의 파일 GCP 주피터 노트북에서 unzip 하기 보통 파이썬으로 통용되는 방법들이 안 되서 좀 헤맸다;; 하지만 웬만하면 로컬 환경에서 unzip 하고 올리십시오... 아래 코드 25G짜리 zip 파일 하나 푸는데 체감상 25분 걸림,, 그리고 반디집 같은 프로그램은 무료인데 GCP 노트북 인스턴스는 시간당 과금..ㅎ from google.cloud import storage from zipfile import ZipFile from zipfile import is_zipfile import io def zipextract(bucketname, zipfilename_with_path): storage_client = storage.Client() bucket = storage_client.get_bucket(bucketname) destination_..
GCP 주피터 노트북 인스턴스로 GCP 버킷의 mp4 비디오 읽기 먼저 버킷을 공개 상태로 만들어야 한다. https://cloud.google.com/storage/docs/access-control/making-data-public 데이터 공개 | Cloud Storage | Google Cloud 의견 보내기 데이터 공개 이 페이지에서는 공개 인터넷의 모든 사용자가 내 소유의 객체를 읽을 수 있도록 하는 방법을 소개합니다. 공개된 데이터에 액세스하는 방법에 대해서는 공용 데이터 cloud.google.com 참고. 이걸 바꾸면 버킷 - 한 파일을 누르면 다음과 같이 URL이 뜨는데 여기서 Public URL의 앞부분을 가져오면 된다. from google.cloud import storage bucket = storage.Client().get_bucket('버킷..
파이썬으로 파일 부분 이름 한번에 바꾸기 import os for (path, dir, files) in os.walk(path): for name in files: ano = name.split('_')[n] newname = '_'.join(name.split('_')[:n])+'_normal_'+ '_'.join(name.split('_')[n:]) file_oldname = str(path)+str(name) file_newname_newfile = str(path)+str(newname) os.rename(file_oldname, file_newname_newfile) 파일 이름이 다음처럼 긴 경로의 파일 중 datefight02 부분의 이름을 normal로 한번에 바꿔줘야 했다. 찾아보다가 내게 맞는 방법으로 변경. /content/..
파이썬 재귀함수로 문자열 거꾸로 출력하기 string ->gnirts 같이 거꾸로 출력하고 싶으면 슬라이싱+재귀를 통해 출력할 수 있다. 먼저 문자열의 길이가 1일 땐, 그대로 문자열을 리턴하는 기본 조건을 만든다. 그 다음에 맨 마지막 문자열을 출력할 수 있도록, 문자열의 두 번째 글자부터 재귀 함수에 넣는다. -> 그럼 맨 마지막 글자, 그 전 글자 ... 처음 글자 이런 식으로 출력된다. def recursion_advanced(str): if str =='': # len(str) == 1 도 가능하다 return str else: return recursion_advanced(str[1:]) + str[0] recursion_advanced("mycatiscute") >>>etucsitacym
정규식을 사용하여 여러 패키지 버전 한 번에 지우기 !pip install google-auth==1.27.1 !pip install google-auth-oauthlib==0.4.3 !pip install grpcio==1.36.1 !pip install markdown==3.3.4 !pip install oauthlib==3.1.0 !pip install protobuf==3.15.5 !pip install pyasn1==0.4.8 !pip install pyasn1-modules==0.2.8 !pip install requests-oauthlib==1.3.0 !pip install rsa==4.7.2 !pip install tensorboard==2.4.1 !pip install tensorboard-plugin-wit==1.8.0 !pip inst..
try except에서 None 사용 조심! try, except 구문을 쓸 때, 조건에 따라 except 상황의 경우 None을 리턴해주는 식으로 코드를 짤 때가 있는데, if not result: 와 같이 조건식에서 not을 활용하는 경우 빈 문자열, 빈 리스트, 0, None이 다 False기 때문에 예상치 못한 결과가 나올 수 있어 주의해야 한다. # 1. 문제 안 됨 def none_test(num1, num2): try: return num1 / num2 except ZeroDivisionError: return None # None 반환 result = none_test(0,2) print(result) # 정상결과 if result is None: # 답은 0.0이고 None이 않으므로 print('result is None') # ..
데이터프레임 안의 값만 출력하기 예전에 코테 문제를 풀면서 데이터 프레임 안의 요소를 깔끔하게 형식으로 출력 못한 적이 있다. 파이썬 기초 문법을 더 배우고 나니, unzip 형식으로 해결할 수 있었다. for i in df.values: a,b,c,d = i print(a,b,c,d) 로 데이터프레임 안의 항목들을 위 형식처럼 꺼낼 수 있다.