Posts

Showing posts from September, 2023

jsup/avle 보팅 코드 갱신 - 1일1포스팅 강박에서 벗어나기

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/jsup-avle-1-1 안녕하세요. @joviansummer입니다. @jsup과 @avle의 보팅 코드를 갱신하여 적용하였습니다. 검토는 상당히 오래전부터 진행해 왔습니다만, 최근에 구체적인 설계 방향이 잡히고 기술적으로 어떻게 할 것인지에 대해서도 결정이 되면서 생각보다 빠르게 코드 수정이 진행되었습니다. 새로운 기능은 신청자에 대해서 포스팅이 아니라 댓글에도 보팅을 하는 것입니다. 매일 포스팅하는 것이 부담스럽고 힘들다면 댓글을 달면 됩니다. 당연히 1일1포스팅보다 1일1댓글이 훨씬 쉽고, 댓글을 많이 쓴다고 나쁠 것도 없다고 생각됩니다. 임대 보팅을 받기 위해 억지로 매일 포스팅하는 것은 본인에게도 괴로운 일이고 포스팅 자체도 결국 저품질화될 가능성이 큽니다. 매일 포스팅하는 것이 즐거운 사용자들도 있겠습니다만, 단지 보팅 때문에 억지로 쥐어 짜서 하루에 하나씩 힘들게 포스팅하거나 사실상 내용이 없다시피 한 포스팅을 하는 사용자들도 있는 것이 현실입니다. 보팅을 받아야 한다는 압박감으로 매일 억지로 포스트를 쓰기 시작하면서 스팀잇은 재미 없고 따분한 곳이 되어 갑니다. 게다가 스팀잇의 트렌딩 페이지는 사실상 대량의 임대 셀프 보팅을 받는 사용자의 포스팅을 모아놓은 공간처럼 되어 있어, 이대로 계속 가면 SNS 본연의 매력은 상실하고 코인 채굴장 그 이상도 이하도 아니게 될까 우려되는 측면도 있습니다. 댓글 보팅이 이런 문제를 완화하는데 조금이나마 기여할 수 있지 않을까 생각됩니다. 대상: @jsup 또는 @avle에 스팀파워를 임대하여 보팅을 받고 있는 계정 신청 방법: @jsup 또는 @joviansummer의 최근 포스트에 "댓글 보팅을 신청합니다"라는 내용으로 댓글을 써 주시면 됩니다. 제가 확인하고 서버에 등록하면 다음날부터 해당 계정은 포스트/댓글 관계 없이 그날 처음 작성하...

파이썬 딕셔너리(dict)에서 원소 추가/제거

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/dict 파이썬에서 key:value 형태로 구성된 딕셔너리(dict)에서 특정 키(key)에 대응하는 원소를 추가/제거하는 방법입니다. 원소 추가는 간단합니다. 변수를 딕셔너리 형식으로 초기화한 후에 원소를 할당해 주면 됩니다. # x_dict 변수 초기화(딕셔너리 형식) x_dict = {} # 원소 추가 - 키 'abc', 값 100 x_dict['abc'] = 100 # 2개 더 추가 x_dict['def'] = 50 x_dict['xyz'] = 99 당연히 아래와 같이 변수 x_dict의 내용을 한번에 할당해도 됩니다. x_dict = { 'abc':100, 'def':50, 'xyz':99 } 이제 제거해 보겠습니다. x_dict에서 키 'def'에 대응하는 원소를 제거하려면 pop()을 사용합니다. 아래와 같습니다. x_dict.pop('def') 이제 x_dict의 내용을 확인해 보면 해당 원소가 사라진 것으로 볼 수 있습니다. print(x_dict) {'abc': 100, 'xyz': 99} 제거하면서 해당 원소를 다른 변수에 할당할 수 있습니다. 이번에는 키 'xyz'에 대응하는 원소를 제거하면서 이 값을 변수 y에 할당해 봅니다. y = x_dict.pop('xyz') 키 'xyz'에 대응하는 값은 99였으므로, 변수 y에 99가 할당되고 x_dict에서는 이 원소가 제거되었습니다. print(y) 99 print(x_dict) {'abc': 100}

파이썬에서 문자열의 마지막 글자 제거하기

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/5y2xsg 예를 들어 리스트(list)에 아래와 같이 3개의 원소가 있다고 하겠습니다. fruits = ['apple','peach','banana'] 위에 제시된 리스트의 내용을 문자열 "apple, peach, banana"로 바꾸고 싶은 경우입니다. 우선 아래와 같이 해 보죠. for 반복문으로 리스트의 각 원소를 result_str 변수에 첨부하면서 쉼표와 공백을 추가했습니다. result_str = '' for item in fruits: result_str = res_str + item + ', ' print(result_str) apple, peach, banana, 여기서 맨 뒤쪽에 있는 쉼표와 공백을 제외하고 싶은 것입니다. 파이썬의 문자열은 음수(negative) 인덱스(index)를 제공합니다. 위의 경우 result_str 변수의 맨 마지막 글자는 result_str[-1], 마지막에서 두번째 글자는 result_str[-2]에 대응됩니다. 마지막 2글자를 제외하고 싶으므로, 아래와 같이 할 수 있습니다. result_str_fixed = result_str[:-2] print(result_str_fixed) apple, peach, banana

파이썬에서 문자열의 일부를 가져오기

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/1tuzx 파이썬에서 문자열을 사용할 때 특정 위치의 글자들을 편리하게 가져올 수 있습니다. x = 'hello world' 위와 같이 x에 문자열 'hello world'를 할당해 주었습니다. 첫번째 글자, 두번째 글자 등 특정 위치의 글자 하나를 가져오려면 아래의 예시처럼 할 수 있습니다. # 문자열 x의 첫번째 글자 출력 print(x[0]) h x[0]이 첫번째 글자인 'h', x[1]이 두번째 글자인 'e'가 됩니다. 범위를 지정할 수도 있습니다. 만약 첫번째부터 세번째 글자까지 가져오고 싶다면 x[0:3] 이렇게 설정합니다. # 문자열 x의 첫번째부터 세번째 글자까지 출력 print(x[0:3]) hel 유의할 점은, 위치가 0부터 시작하고, 콜론(:) 다음에 지정되는 인덱스값은 출력값에 포함되지 않는다는 점입니다. x[0:3]이면 x[0]부터 x[2]까지 가져오는 것입니다. 특정 위치부터 마지막까지 가져올 수도 있습니다. 끝나는 위치를 지정하지 않으면 됩니다. # 2번째 글자부터 끝까지 출력 print(x[1:]) ello world

파이썬에서 줄바꿈 없이 출력하기

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/5xslff 파이썬의 print() 함수로 출력을 하면 자동으로 줄바꿈이 됩니다. 만약 줄바꿈을 없도록 하려면 end 옵션으로 종결을 지정해 주면 되겠습니다. 예를 들어 줄바꿈 대신 콜론(:)을 출력하고 싶다면 아래와 같이 할 수 있습니다. print('hello', end=':') hello: for 반복문으로 예시를 만들어 보겠습니다. for i in range(3): print(i) 0 1 2 줄바꿈 대신 공백을 사용하려면 아래와 같이 할 수 있겠습니다. for 반복문이 종료되고 나서는 줄바꿈을 해 주기 위해 print() 함수를 한번 더 사용했습니다. for i in range(3): print(i, end=' ') # 반복문이 끝났으니 줄바꿈 출력 print('') print('완료되었습니다.') 0 1 2 완료되었습니다.

파이썬에서 파일 복사

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/67jpbq 파이썬에서 파일을 복사하고 싶을 때 shutil 모듈을 활용할 수 있습니다. shutil.copy() 함수를 사용합니다. 예를 들어 my_data.txt 파일을 복사해서 my_data.txt.bak 파일로 저장하고 싶다면 아래와 같이 할 수 있습니다. import shutil shutil.copy('my_data.txt', 'my_data.txt.bak') 파일 백업을 위해 복사할 때 아래와 같이 해 볼 수 있겠습니다. import shutil source_file = '/my_dir/my_data.txt' backup_file = source_file + ".bak" shutil.copy(source_file, backup_file)

파이썬에서 파일 확장자 분리

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/mi6jf 파이썬에서 간단하게 파일명에서 확장자만 따로 떼어내서 확인할 수 있습니다. os 모듈을 import하고 os.path.splitext() 함수를 사용하면 됩니다. import os filename = "/test/my_data.tmp.txt" result = os.path.splitext(filename) print(result) ('/test/my_data.tmp', '.txt') 확장자와 나머지 부분을 분리해서 위와 같이 투플(tuple)을 만들어 줍니다. 투플은 리스트(list)와 비슷하지만 값을 변경할 수 없다는 점이 다릅니다. 리스트와 마찬가지로 인덱스로 필요한 부분을 가져와서 쓰면 됩니다. print(result[0]) /test/my_data.tmp print(result[1]) .txt 파일의 확장자에 따라 뭔가 다른 작업을 해야 할 때 편리합니다. ``` ext_str = os.plath.splitext(filename)[1] if ext_str == ".txt": print("확장자가 .txt입니다.")

파이썬에서 실행 명령에 인자(argument) 지정

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/argument 파이썬 스크립트를 실행할 때 실행 명령에 인자(argument)를 지정할 수 있습니다. 예를 들어 인자를 확인해서 이를 그대로 출력하는 스크립트 test.py를 만든다고 생각해 보겠습니다. 아래와 같은 실행 결과를 주는 스크립트입니다. python3 test.py hello test.py hello python3 test.py hello world test.py hello world 위의 스크립트는 아래와 같은 내용으로 작성되었습니다. import sys for arg in sys.argv: print(arg) 실행 명령의 인자는 sys.argv에 저장되며, 리스트(list) 형식입니다. 위의 예시에서는 for 반복문으로 sys.argv[0]부터 차례로 출력하였습니다. 2번째 예시의 경우(실행 명령: python3 test.py hello world) sys.argv에는 아래와 같이 값이 할당될 것입니다. sys.argv[0]: 'test.py'(스크립트의 이름) sys.argv[1]: 'hello' (첫번째 인자) sys.argv[2]: 'world' (2번째 인자)

스팀 개발자를 위한 웹사이트

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/28nwfb 오토 보팅 서비스를 개발하면서 주로 참고했던 자료는 steem-python이었습니다. 아래의 링크입니다. steem-python https://steem.readthedocs.io/en/latest/ 최근에 장애가 발생하면서 특히 도움이 많이 된 웹사이트는 스팀 개발자 포털(steem developer portal)입니다. 아래의 링크입니다. steem developer portal https://developers.steem.io/ 이 2개 웹사이트에서 제공되는 내용들과 구글 검색을 통해 찾는 기타 다른 자료들을 바탕으로 작업을 진행하고 있습니다.

파이썬에서 문자열에 특정한 문자열이 포함되었는지 확인

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/3yclh3 문자열(str) 형식의 변수에 특정한 문자열이 포함되어 있는지 확인하려면 find()를 사용합니다. 아래와 같이 간단한 예시를 보겠습니다. x = 'hello world' x.find('hello') 위의 x.find('hello')는 문자열 x에 hello가 포함되어 있을 경우 해당 문자열이 시작되는 위치를 반환하게 됩니다. 이 예시에서 x의 맨 처음에 hello가 있으므로 반환되는 값은 0입니다. (위치는 0부터 셉니다.) 변수에 할당하지 않고 문자열 자체에 대해서도 find()를 사용할 수 있습니다. # 첫번째 등장하는 o의 위치 찾기 'hello world'.find('o') 만약 일치하는 문자열이 없을 경우에는 -1을 반환합니다. x.find('abcd') 위의 예시처럼 문자열 "abcd"를 찾는다면 "hello world"에는 포함되어 있지 않으므로 -1을 반환할 것입니다. 따라서, 반환되는 값이 0 이상이면 문자열이 포함되어 있는 것이라고 판단할 수 있습니다. if 조건문으로 아래와 같이 문자열 포함 여부를 확인할 수 있습니다. x = 'hello world' if x.find('hello') >= 0: print('x에 hello가 포함되어 있습니다. 위치는 ', x.find('hello'), '입니다.') else: print('x에 hello가 포함되어 있지 않습니다.') 예시를 하나 더 보겠습니다. x = 'hello world' y = 'abcd' if x.find(y) == -1: print('x에 ',...

파이썬에서 예외(exception) 처리

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/exception 파이썬에서의 예외(exception) 처리 예시입니다. try와 except 구문을 사용합니다. 예를 들어 어떤 수를 0으로 나누려 할 경우 예외가 발생할 것입니다. try: x = 100/0 except: print("예외가 발생했습니다.") 위의 코드를 실행하면 "예외가 발생했습니다."라는 문자열이 출력될 것입니다. 어떤 예외가 발생했는지 출력하고 싶다면 아래와 같이 할 수 있습니다. try: x = 100/0 except Exception as e: exc_str = str(e) print(exc_str) 위의 코드를 실행하면 예외 발생 메시지 "division by zero"가 출력될 것입니다.

파이썬의 딕셔너리(dict)에서 특정 키(key)가 존재하는지 확인하기

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/dict-key key:value 형태로 구성되는 딕셔너리(dict) 형식의 변수에서 특정한 키(key)가 포함되어 있는지 확인하는 방법입니다. 일단 아래와 같이 x_dict라는 변수를 생각해 봅니다. x_dict = { 'abc':100, 'def':50, 'xyz':99 } x_dict에 "def"라는 키가 있는지 확인하려면 간단하게 if 조건문으로 가능합니다. if 'def' in x_dict: print('x_dict에 키 def가 존재합니다.') else: print('x_dict에 키 def가 존재하지 않습니다.') 딕셔너리의 value 항목을 리스트(list) 또는 딕셔너리로 구성하려면 실제 값을 할당하기 전에 초기화를 해 주어야 하는데, 이와 관련하여 간단한 예시를 메모해 둡니다. target_list = { 'abc':[1,2,3] } target_key = 'def' if target_key in target_list: # value에 10을 추가, 리스트 형태이므로 append() 사용 target_list[target_key].append(10) else: print("target_list에 ", target_key, "키가 없습니다." # value를 리스트 형식으로 선언한 후에 value에 10을 추가 target_list[target_key] = [] target_list[target_key].append(10) print(target_list) {'abc': [1, 2, 3], 'def': [10]}

파이썬에서 정규표현식(regex)을 이용한 문자열 검색

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/regex 파이썬에서 정규표현식(regular expression)을 이용해서 검색 조건에 일치하는 문자열인지 확인하는 방법입니다. 예시를 보겠습니다. 문자열 'abc', 'def', '123', '1abc' 이렇게 4개를 묶어 리스트(list)로 만들고 영문 소문자([a-z])를 검색해 봅니다. import re # 리스트 생성 str_list = ['abc', 'def', '123', '1abc'] # 적용할 정규표현식을 컴파일하여 regex에 할당 regex = re.compile('[a-z]') 이제 for 반목문으로 str_list에 속한 문자열들에 대해서 검색을 합니다. 우선 match()를 사용해 봅니다. for i in str_list: if regex.match(i): print(i) abc def match()는 문자열 처음부터 조건과 일치하는지 검색합니다. 위의 예시에서는 문자열 'abc'와 'def'가 처음부터 영문 소문자로 시작하므로 조건에 부합하여 줄력되었습니다. search()는 문자열 전체에 대해 일치하는 부분이 있는지를 검색합니다. for i in str_list: if regex.search(i): print(i) abc def 1abc 문자열 '1abc'의 경우 영문 소문자로 시작하지 않기 때문에 match()에서는 조건에 부합하지 않지만, 영문 소문자를 포함하고 있으므로 search()에서는 조건에 부합되어 출력됩니다. findall()은 조건에 맞는 문자열을 모두 찾아서 리스트 형태로 가져옵니다. x = 'hello' y = regex.findall(x) p...

파이썬에서 딕셔너리(dict) 정렬(sort)

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/dict-sort 우선 파이썬에서 리스트(list)를 정렬하는 방법은 아래의 링크에 있습니다. 파이썬에서 리스트(list) 정렬(sort) https://steemit.com/hive-141029/@joviansummer/list-sort {key1:value1, key2:value2,... } 형태의 딕셔너리 형식일 경우, 아래와 같이 sorted() 함수를 이용해서 정렬할 수 있습니다. my_dict = { "xyz":10, "def": -1, "abc":5 } # my_dict의 키(key)를 기준으로 정렬하여 my_dict_sorted에 할당 my_dict_sorted = sorted(my_dict.items()) my_dict.items()로 딕셔너리에 저장된 목록을 추출한 후에 sorted()로 정렬이 이루어집니다. 결과는 리스트 형식이며 각 항목은 key와 value의 튜플(tuple)이 됩니다. print(my_dict_sorted) [('abc', 5), ('def', -1), ('xyz', 10)] 키가 아니라 값(value)을 기준으로 정렬하려면 아래와 같이 합니다. my_dict_sorted_by_value = sorted(my_dict.items(), key=(lambda x: x[1])) my_dict.items()에서 두번째 항목(x[1])을 정렬 기준(key)으로 지정하였습니다. print(my_dict_sorted_by_value) [('def', -1), ('abc', 5), ('xyz', 10)]

파이썬에서 리스트(list) 정렬(sort)

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/list-sort sorted() 함수를 이용해서 리스트에 담긴 값들을 정렬할 수 있습니다. x = [1, 3, 5, -1, 0] # x의 값을 오름차순으로 정렬하여 x_sorted에 할당 x_sorted = sorted(x) 결과값을 비교하면 아래와 같습니다. print(x) [1, 3, 5, -1, 0] print(x_sorted) [-1, 0, 1, 3, 5] 반대로 내림차순 정렬을 하려면 아래와 같이 합니다. # x의 값을 내림차순으로 정렬하여 x_sorted_rev에 할당 x_sorted_rev = sorted(x, reverse=True) print(x_sorted_rev) [5, 3, 1, 0, -1] 리스트에 문자열을 저장했을 경우에도 정렬이 됩니다. y = ['xyz', 'def', 'abc'] y_sorted = sorted(y) print(y_sorted) ['abc', 'def', 'xyz'] 한가지 생각할 점은, 리스트에 담긴 값들이 같은 종류의 값이어야 한다는 점입니다. 예를 들어 문자열(string)과 정수(int)가 혼합된 리스트에서는 sorted() 함수를 사용하지 못합니다.

파이썬 관련 메모 2가지(일시정지, 하위 디렉토리 검색)

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/2 개발 작업 참고용으로 2가지 사항을 메모해 둡니다. 파이썬에서 코드 실행을 일정 시간 동안 정지하고 싶을 경우 time.sleep()을 사용합니다. 얼마 동안 정지할 것인지라 초로 지정할 수 있습니다. import time # 30초간 정지 time.sleep(30) 현재 디렉토리 하위에 있는 디렉토리와 파일을 검색하려면 os.walk()를 사용합니다. 경로(path), 해당 경로에 있는 디렉토리들, 해당 경로에 있는 파일들을 생성해줍니다. 디렉토리들과 파일들이 리스트(list) 형식으로 생성됩니다. import os # 현재 디렉토리를 파악하여 CUR_DIR에 할당 CUR_DIR = os.getcwd() # 현재 디렉토리 하위에 있는 디렉토리와 파일 출력 for (path, dirs, files) in os.walk(CUR_DIR): print("경로: ", path) print("디렉토리: ", dirs) print("파일: ", files) print(" ") 만약 파일명만 골라서 하나씩 출력하려면 아래와 같이 할 수 있겠습니다. for (path, dirs, files) in os.walk(CUR_DIR): for file in files: print("파일: ", file)

파이썬을 이용한 텔레그램 챗봇 구현 사례

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/6gcofv 파이썬으로 텔레그램 챗봇을 만드는 내용에 대해서는 상당히 많은 게시물들이 검색되는데, 개인적으로 괜찮은 블로그 게시물을 발견해서 메모해 둡니다. 아래의 링크입니다. Part 1: How to create a Telegram Bot in Python in under 10 minutes https://www.codementor.io/@karandeepbatra/part-1-how-to-create-a-telegram-bot-in-python-in-under-10-minutes-19yfdv4wrq 코드 예시가 상당히 잘 되어 있어서 가져다가 필요에 맞게 수정해서 사용하면 될 것 같습니다.

텔레그램 챗봇 구현을 위한 파이썬 모듈

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/32nk9x 텔레그램(Telegram) 메신저에서 챗봇(chatbot)을 만들고 제어할 수 있는 파이썬 모듈이 있습니다. 우선 텔레그램 봇을 소개하는 공식 문서는 아래의 웹사이트에 있습니다. Bots: An introduction for developers https://core.telegram.org/bots 위 문서의 "6. BotFather" 항목에 봇을 만드는 절차가 설명되어 있습니다. 봇을 제어하기 위한 API를 파이썬에서 편리하게 사용할 수 있게 해주는 모듈이 있는데 python-telegram-bot이라는 모듈입니다. 공식 웹사이트는 아래의 링크입니다. python-telegram-bot https://github.com/python-telegram-bot/python-telegram-bot 스팀잇 자동 보팅 서비스 개발에서 파이썬 챗봇을 활용하는 방안을 검토하고 있는 중입니다.

파이썬에서 스팀잇 ID 및 포스팅 키 유효성 확인

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/id 파이썬에서 스팀잇 ID와 포스팅 키가 유효한지 확인하는 방법입니다. steem-python 모듈을 활용합니다. steem-python 먼저 포스팅 키가 유효한지 확인하는 과정은 아래의 코드로 가능합니다. import steem STEEMIT_ID="joviansummer" POSTING_KEY="my_posting_key" # 포스팅 키 유효성 확인 try: user = steem.Steem(keys=[POSTING_KEY]) except: print("포스팅 키가 유효하지 않습니다.") print("유효한 포스팅 키입니다.") 포스팅 키가 유효한지 확인이 되었으면 이제 이 포스팅 키의 주인이 스팀잇 ID와 일치하는지 확인합니다. 위의 코드에 이어서 아래의 코드로 가능합니다. (인터넷에서 발견하고 적어 두었는데 어디에서 찾았었는지 기억이 안 나네요.) from steembase.account import PrivateKey # 포스팅 키에 대응하는 공개키(public key) pubkey = PrivateKey(POSTING_KEY).pubkey # 스팀잇 ID에 대응하는 공개키 account = user.get_account(STEEM_ID) pubkey2 = account['posting']['key_auths'][0][0] # 양쪽 공개키가 일치하는지 확인 if str(pubkey) == str(pubkey2): print("스팀잇ID와 포스팅 키가 일치합니다.") else: print("스팀잇ID와 포스팅 키가 일치하지 않습니다.") 오토보팅 서비스 개발은 주중에 틈틈이 설계하고 구상하면서 메모해 놓은 아이디어를 주말에 시간을 내서 구체적으로...

파이썬 pytz.timezone()에서 사용 가능한 시간대 목록

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/pytz-timezone 우선 파이썬에서의 시간대(timezone) 정보 관련 이전 게시물은 아래의 링크입니다. 파이썬에서 시간대(timezone) 변경 https://steemit.com/hive-141029/@joviansummer/timezone 파이선 pytz 모듈에서 사용 가능한 시간대 명칭의 목록은 pytz.all_timezones에 리스트(list)로 저장되어 있습니다. import pytz # 시간대 목록 전체 확인 pytz.all_timezones # 첫번째 항목 확인 pytz.all_timezones[0] 또는 위키피디아에서 확인할 수 있습니다. 아래의 링크 입니다. list of tz database time zones https://en.wikipedia.org/wiki/List_of_tz_database_time_zones 시간대 정보 목록에서 "TZ database name" 항목을 보면 됩니다. 대표적인 시간대 몇개를 적어 둡니다. UTC/GMT: UTC 서울: Asia/Seoul 도쿄: Asia/Tokyo 싱가포르: Asia/Singapore 미국 서부(LA 등): US/Pacific 미국 동부(뉴욕, 워싱턴DC 등): US/Eastern 런던: Europe/London 파리: Europe/Paris

파이썬에서 특정 파일이 존재하는지 확인하기

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/upz7a 인터넷에서 찾아봤다가 잊어버렸다가 나중에 다시 찾아보는 수고를 방지하기 위해서 현재 진행중인 작업과 관련하여 필요한 내용들을 시간 날 때마다 메모해 두려고 합니다. 파이선에서 파일 존재 여부를 확인하는 예시입니다. os 모듈을 활용합니다. import os # 현재 디렉토리 정보를 CUR_DIR에 할당 CUR_DIR = os.getcwd() # 디렉토리 출력 print(CUR_DIR) 현재 디렉토리에 joviansummer.txt 파일이 존재하는지 확인합니다. # 확인 대상 파일(리눅스 기준으로 구분자 "/" 사용) target_file = CUR_DIR + "/joviansummer.txt" # 대상 경로(path) 존재 여부 확인 if os.path.exists(target_file): print("경로가 존재합니다") else: print("경로가 존재하지 않습니다") os.path.exits()는 대상이 파일인지 디렉토리인지 관계 없이 해당 경로가 존재할 경우에 True가 됩니다. 대상이 "파일"인지를 특정해서 확인하기 위해 os.path.isfile()을 함께 AND(교집합) 조건으로 묶어줍니다. # 대상 경로가 존재하고, 그것이 파일인지 확인 if (os.path.exists(target_file) and (os.path.isfile(target_file)): print("파일이 존재합니다.") else: print("파일이 존재하지 않습니다.")

파이썬에서 시간대(timezone) 변경

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/timezone 파이썬에서 시간대(timezone)를 변경하는 방법을 간단하게 메모해 둡니다. datetime 모듈과 dateutil 모듈을 사용해서 현재 시간을 다른 시간대로 변환해서 출력할 수 있습니다. from datetime import datetime import pytz # 현재 시각을 UTC/GMT 기준으로 now에 할당 now = datetime.utcnow() # 현재 시각을 지역 시간대 기준으로 now_local에 할당 now_local = datetime.now() datetime 객체인 now에 저장된 시간 정보를 원하는 형식에 맞춰서 문자열로 출력하기 위해 strftime() 함수를 이용합니다. # 현재 시각 출력 (UTC/GMT) now.strftime("%Y-%m-%d %H:%M:%S") '2021-04-10 13:48:54' # 현재 시각 출력 (KST) now_local.strftime("%Y-%m-%d %H:%M:%S") '2021-04-10 22:48:54' 위의 값은 UTC/GMT 기준이므로, 이것을 한국 시간대로 바꿉니다. 우선 시간대 정보(tzinfo)를 가져와 변수 UTC, KST에 할당합니다. # 한국 시간대 정보를 KST에 할당 UTC = pytz.timezone('UTC') KST = pytz.timezone('Asia/Seoul') now에 할당된 datetime 객체에 시간대가 GMT/UTC라는 정보를 추가합니다. # now의 시간대 정보를 UTC로 설정하여 now_utc에 할당 now_utc = now.replace(tzinfo=UTC) now_utc의 시간대가 GMT/UTC라고 명시되었으므로, 이 시간 정보를 다른 시간대 기준으로 환산할 수 있습니다. ...