python

    [python] 특정 디렉토리 내의 파일 수정시각과 현재시각 비교하기

    일단 파일의 수정시간은 os.path.getmtime() 으로 받아올 수 있는데, 이 결과값은 time 객체로 반환된다. 일반적으로 시간 비교에는 datetime 을 사용하므로, time 객체를 변환해줘야 함. path_dir = os.getcwd()+path print(datetime.datetime.now()) for s in os.listdir(path_dir) : print(datetime.datetime.fromtimestamp(os.path.getmtime(path_dir+s))) os.listdir() 함수로 특정 경로 내의 모든 파일목록을 받아옴 각 파일에 대해 os.path.getmtime() 함수를 실행하여 수정시각을 받아옴 그 다음, datetime.fromtimestamp() 를 사..

    [python] 문자열로 된 숫자 리스트 합계 내기

    리스트에 문자열 형식의 숫자가 불가피하게 들어갈 때가 있다. 이 불가피한 경우에 또 불가피하게 그 문자들을 숫자로 바꿔서 합계를 내야 될 매우매우 불가피한 상황이 있을 수 있다. a = ['1','2','3'] print(sum(map(int, a))) # 6

    [python] Class가 담긴 list 를 Class 안의 특정 멤버변수 기준으로 정렬하기

    class CustomQueryStatClass: def __init__(self,QueryName,QueryCount): self.QueryName = QueryName self.QueryCount = QueryCount def __lt__(self,other): return self.QueryCount < other.QueryCount ~~~~ CustomQueryStatList = sorted(CustomQueryStatList) def __lt__(self,other) lt 함수가 선언되어있으면 sorted() 와 같이 값을 비교하는 함수를 실행할때 선언되어있는 내용대로 비교를 진행한다. 참고문서 https://wangin9.tistory.com/entry/python-list-of-class-s..

    [python pandas] 그룹별 집계 - value_counts()

    print(ResFrame["TypeName"].value_counts()) 결과 type count 20484 5950 20483 2825 28674 2775 28672 2774 28673 2773 37 1465 25 168 1 148 16385 23 21 16 8193 14 20481 9 20482 3 5 3 20480 3 7 1 20485 1 Name: TypeName, dtype: int64 인덱스, 값 각기 따로 추출 print(RequestStastics.index) print(RequestStastics.index.to_list()) print(RequestStastics.values.tolist()) ['2021-11-26', '2021-11-17', '2021-11-15'] [3, 1, 1]

    [python] PostgreSQL→ pandas → json

    목적 python 에서 pandas로 PostgreSQL데이터를 읽어와 json 형식으로 사용하기 위함. db = psycopg2.connect( ~~~~~ ) 일단 PostgreSQL 접속부터 진행해서 객체 생성하고 def selectPD(): sql = "SELECT * FROM WT LIMIT 100" result = pd.read_sql(sql,db) print(result) 판다스의 read_sql 함수로 sql 쿼리와 db 객체를 같이 넘겨주면 pandas로 데이터 불러오는건 끝. 이제 데이터프레임을 JSON으로 변환해주면 되는데, datetime이나 Timestamp 자료형 데이터가 있는경우 변환시 TypeError: Object of type Timestamp is not JSON seri..

    [python] manage.py로 실행할 때 flask 앱이 두번씩 실행되는 경우

    app.run 이나 socketio.run 을 사용하는 경우 use_reloader=False 인자를 추가 해주자. socketio.run(app,port=80,host='0.0.0.0',debug=True,use_reloader=False)

    [python] 클래스를 JSON 문자열 형태로 변환

    def toJSON(self): return json.dumps(self,default=lambda o:o.__dict__,sort_keys=True,indent=4) 메소드를 하나 만들어주자.

    [python] 날짜 문자열을 int형 초로 변환 + 제이쿼리에서 타임스탬프 사용

    int(time.mktime(datetime.strptime(s.assigndate, "%Y-%m-%d %H:%M").timetuple())) "2021-10-27 16:10" 과 같이 연-월-일 시:초 형태로 전달되는 문자열을 strptime 함수를 통해 datetime 객체로 변환한 후 timestuple() 함수를 써서 초 형태로 만들고 time.mktime 함수를 써서 timestamp 형태로 변환한 다음 int 함수를 통해 숫자 데이터로 바꿀 수 있다. 이렇게 나온 타임스탬프 데이터를 제이쿼리를 통해 변환하여 쓰고싶을땐 var odate = new Date(date*1000) 넘어온 타임스탬프 값에 1000 (밀리초) 을 곱해서 사용하면 된다.

    [python] jira-python API에서 labels 형태 필드 사용법

    레이블 필드에서 레이블의 추가와 삭제는 문자열을 기반으로 이뤄진다. iss.update(labels= [ {'add': "test"} ] ) iss.update(labels= [ {'remove': "test"} ] ) 또한 필드에 커스텀 필드로 레이블을 추가할 수 있는데, 이때 속성이 정해진 레이블 필드를 사용하는경우는 아래와 같이 사용할 수 있다. iss.update(customfield_10059=[ {'add': {'id':'10035'} } ] ) iss.update(customfield_10059=[ {'remove': {'id':'10035'} } ] ) label 형태를 사용하는 커스텀 필드에서 레이블의 추가와 삭제는 id 코드를 이용해 이뤄진다.

    [python] python S3 API

    pip install boto3 S3 API 사용을 위한 모듈 설치 파일 업로드 두가지 방법이 있다 . boto3.resource() 사용 import boto3 from botocore.client import Config S3_KEY = '시크릿 키 ID' S3_SECRET = '시크릿 키' BNAME = '버킷(폴더)이름' def s3upload(): data = open('test.txt','rb') #S3 연결하고 객체 생성 s3 = boto3.resource('s3',aws_access_key_id=S3_KEY, aws_secret_access_key=S3_SECRET,config=Config(signature_version='s3v4')) #생성 객체에 파일 업로드 실행 return s3.B..