2021 06 Python
Python Utilize Python Utilize 리스트 중복 제거

#1. How to deduplicateSummary, Set, For[ Summary ]리스트 데이터에서 중복된 값을 제거하고 싶다면 어떻게 해야 할까.통상적으로 두가지 방법을 이용해 수행할 수 있다.집합 자료형(set)을 이용한 제거반복문(for)을 이용한 제거[ Set ]집합 자료형은 크게 두가지 특징이 존재한다.중복 비허용순서 미존재그렇기 때문에 리스트 형태를 집합 자료형으로 변경할 경우 중복을 제거할 수 있다.my_list = ['A', 'B', 'B', 'C', 'C'] my_set = set(my_list) new_list = list(my_set) print(new_list)# ['A', 'B', 'C']위의 코드는 list와 set 예약어를 한줄에 적어 간단하게 실행이 가능하다.my_list = list(set(['A', 'B', 'B', 'C', 'C'])) print(my_list) # ['A', 'B', 'C'] [ For ]리스트의 요소를 모두 순회하며 이미 존재했던 요소인지 검사한다.존재하지 않는다면 새로운 리스트에 넣어 저장한다.my_list = ['A', 'B', 'B', 'C', 'C'] new_list = [] for value in my_list: if value not in new_list: new_list.append(value) print(new_list)# ['A', 'B', 'C']

작성일 :2021-06-08 02:15 / 조회수: 89회
2021 05 Python
Python Utilize Python Utilize 파이썬 프로젝트 패키지 관리

#1. Python Project PackageSummary, Management[ Summary ]파이썬으로 프로젝트를 진행하면 pip로 여러 패키지를 설치한다.이때 프로젝트에 따라서 사용하는 패키지와 버전이 달라지게 된다.설치된 파이썬 패키지는 pip를 통해서 리스트를 확인할 수 있다.$ pip list다음은 간단한 프로젝트를 진행하던 개발 환경의 패키지 리스트이다.> Flask_File-Storage-MongoDB_Simple GitHubC:\Users\reasley>pip list Package Version --------------- ------- click 7.1.2 et-xmlfile 1.1.0 Flask 1.1.2 Flask-PyMongo 2.3.0 itsdangerous 1.1.0 Jinja2 2.11.3 MarkupSafe 1.1.1 numpy 1.20.2 openpyxl 3.0.7 pandas 1.2.4 pip 21.1.1 pymongo 3.11.3 python-dateutil 2.8.1 pytz 2021.1 setuptools 49.2.1 six 1.15.0 Werkzeug 1.0.1 xlrd 2.0.1간단한 프로젝트를 진행해도 18개의 패키지가 존재한다.프로젝트를 새로운 환경에서 진행하고 싶을 땐 어떻게 해야할까?수십 가지의 패키지를 일일이 타이핑하여 설치하는 방법은 매우 효율이 나쁘다.[ Management ]이를 위해 requirements.txt 파일에 패키지와 버전을 기록하여 관리할 수 있다.패키지가 기록될 파일 이름은 꼭 requirements.txt일 필요는 없으나, 대부분의 프로젝트에서 해당 파일 명으로 패키지를 기록한다.pip 명령어를 이용하여 파일에 패키지와 버전을 기록할 수 있다.$ pip freeze > requirements.txtGitHub에 업로드할 때에는 소스코드들과 함께 업로드한다.해당 패키지들을 설치하는 방법은 pip 명령어를 실행하는 경로에 파일을 이동한다.이후 pip install에 r 옵션을 통해 패키지 목록이 적힌 파일 명을 인자 값으로 넘겨준다.$ pip install -r requirements.txt

작성일 :2021-05-17 14:54 / 조회수: 76회
2021 04 Python
Python Utilize Python Json dumps

파라미터 파싱 실패 시args.requestjson.dumps({json 변수})아마도 8개 이상의 인자 값을 json body data로 넘길 경우 개수에 제한이 있어받아오지 못하는 현상이 발생하는 것 같음.이때 json.dumps로 묶어서 전달하면 동작함

작성일 :2021-04-25 03:09 / 조회수: 65회
2021 03 Python
Python Utilize Python Firestore 다중 쿼리 색인 생성

이미지 삽입 Raspberry Pi List 시리즈    #1. Monitoring 개요, wFirestore에서 다중(복합) 쿼리를 날리기 위해서는 색인을 만들어 주어야 한다.예) where + order by

작성일 :2021-03-26 06:59 / 조회수: 67회
2021 03 Python
Python Utilize Python 데몬 생성

Raspberry Pi List 시리즈    #1. Monitoring 개요, w# main.py import os import sys import argparse from transfer import TransferData if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument("--pid", help="pid filename", required=True) parser.add_argument("--log", help="log filename", default=None) args = parser.parse_args() # double fork, first fork pid = os.fork() if pid > 0: # parent procrss # just exit exit(0) else: # decouple from parent envronment os.chdir('/') os.setsid() os.umask(0) # second fork pid = os.fork() if pid > 0: exit(0) else: sys.stdout.flush() sys.stderr.flush() si = open(os.devnull, 'r') so = open(os.devnull, 'a+') se = open(os.devnull, 'a+') os.dup2(si.fileno(), sys.stdin.fileno()) os.dup2(so.fileno(), sys.stdout.fileno()) os.dup2(se.fileno(), sys.stderr.fileno()) with open(args.pid, "w") as pid_file: pid_file.write(str(os.getpid())) singing_miku = TransferData(args.log) exit_code = singing_miku.main() exit(exit_code) # transfer.py import time import logging import os import signal import socket import threading import random class TransferData: SONG_LIST = ["Miku Miku Ni Shite Ageru","World is Mine", "39" ] HOST = '192.168.0.47' PORT = 7000 def __init__(self, log_file=None): logging.basicConfig(level=logging.INFO, format='%(message)s') self.logger = logging.getLogger("TransferData") self.log_file = log_file if log_file: self.log_handler = logging.FileHandler(self.log_file) self.logger.addHandler(self.log_handler) self.__stop = False signal.signal(signal.SIGINT, self.stop) signal.signal(signal.SIGTERM, self.stop) def main(self): i = 0 self.logger.info("Start Singing, PID {0}".format(os.getpid())) while not self.__stop: #printhello() self.logger.info('start') client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) client_socket.connect((self.HOST, self.PORT)) client_socket.send('1'.encode()) data = client_socket.recv(1024) print('Received from the server :',repr(data.decode())) client_socket.close() time.sleep(1) #self.logger.info(self.SONG_LIST[i % len(self.SONG_LIST)]) #i += 1 #time.sleep(1) return 0 def stop(self, signum, frame): self.__stop = True self.logger.info("Receive Signal {0}".format(signum)) self.logger.info("Stop Singing") def printhello(): client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) client_socket.connect((HOST, PORT)) client_socket.send(str(random.randrange(1,10)).encode()) data = client_socket.recv(1024) print('Received from the server :',repr(data.decode())) client_socket.close() #threading을 정의한다. 5초마다 반복 수행함. threading.Timer(3, printhello).start() # transfer.service [Unit] Description=transfer service After=multi-user.target [Service] Type=forking ExecStart=/usr/bin/python /opt/transfer/main.py --pid /var/run/transfer.pid --log /var/log/transfer/transfer.log Restart=always PIDFile=/var/run/transfer.pid WorkingDirectory=/opt/transfer/ ExecStop=/bin/kill $MAINPID [Install] WantedBy=multi-user.target $ python3 main.py --pid /tmp/transfer.pid --log /tmp/transfer.log $ ps axuf | grep python $ kill {pid}

작성일 :2021-03-24 03:57 / 조회수: 92회
2021 03 Python
Python Utilize Python 소켓 프로그래밍 클라이언트/서버

Raspberry Pi List 시리즈    #1. Monitoring 개요, w# server.py import socket from _thread import * # 쓰레드에서 실행되는 코드입니다. # 접속한 클라이언트마다 새로운 쓰레드가 생성되어 통신을 하게 됩니다. def threaded(client_socket, addr): print('Connected by :', addr[0], ':', addr[1]) # 클라이언트가 접속을 끊을 때 까지 반복합니다. while True: try: # 데이터가 수신되면 클라이언트에 다시 전송합니다.(에코) data = client_socket.recv(1024) if not data: print('Disconnected by ' + addr[0],':',addr[1]) break print('Received from ' + addr[0],':',addr[1] , data.decode()) client_socket.send(data) except ConnectionResetError as e: print('Disconnected by ' + addr[0],':',addr[1]) break client_socket.close() HOST = '127.0.0.1' PORT = 9999 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server_socket.bind((HOST, PORT)) server_socket.listen() print('server start') # 클라이언트가 접속하면 accept 함수에서 새로운 소켓을 리턴합니다. # 새로운 쓰레드에서 해당 소켓을 사용하여 통신을 하게 됩니다. while True: print('wait') client_socket, addr = server_socket.accept() start_new_thread(threaded, (client_socket, addr)) server_socket.close() # client.py import socket HOST = '127.0.0.1' PORT = 9999 client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) client_socket.connect((HOST, PORT)) # 키보드로 입력한 문자열을 서버로 전송하고 # 서버에서 에코되어 돌아오는 메시지를 받으면 화면에 출력합니다. # quit를 입력할 때 까지 반복합니다. while True: message = input('Enter Message : ') if message == 'quit': break client_socket.send(message.encode()) data = client_socket.recv(1024) print('Received from the server :',repr(data.decode())) client_socket.close() 티스토리 - 2년 전

작성일 :2021-03-23 08:14 / 조회수: 72회
2021 03 Python
Python Utilize Python 바이너리 파일 생성

Python Utilize List 시리즈    #1. What is pyinstaller개요, 테스트 플랫폼 [ 개요 ]파이 인스톨러는 파이썬 애플리케이션과 모든 종속 항목을 단일 패키지로 묶는다.인터프리터 혹은 모듈을 설치하지 않고 패키지 앱을 바로 실행할 수 있다.보다 상세한 정보는 아래의 pypi 사이트에서 확인할 수 있다.> pypi 링크[ 테스트 플랫폼 ]아직 개발중인 모듈로 현재 사용이 가능한 플랫폼은 4곳이다.윈도우, 맥, 리눅스에서 동작하며, FreeBSD, 솔라리스, AIX에서는 테스트되지 않았다.Window (32bit / 64bit)- 윈도우 8 이상에서 동작- 윈도우 스토어에서 설치된 파이썬 미지원Mac OS X (64bit)- Mac OS X 10.13 이상에서 동작GNU / Linux (32bit / 64bit)-   #2. How to use설치 방법, 사용 방법, 실행 방법[ 설치 방법 ]구동 환경은 파이썬 3.5 ~ 3.9버전 사이에서 동작한다.[Debian] $ apt install python3 python3-pip [Redhat] $ yum install python3 python3-pip [Public] $ pip3 install pyinstaller[ 사용 방법 ]일반적인 사용법파일들이 분할되서 저장된다.$ pyinstaller {python file name}단일 파일로 구성(--onefile)추가 옵션 할당 시 단일 파일 한개로 출력된다.$ pyinstaller {python file name} --onefile모듈 추가 파일로 구성(--hidden-import)외부 모듈을 추가적으로 사용하는 프로그램일 경우 추가해야 한다.$ pyinstaller {python file name} --hidden-import={module name}[ 실행 방법 ]출력된 파일은 dict 폴더에 저장된다.권한 할당 후 출력된 파일을 실행하여 프로그램의 출력 값을 확인할 수 있다.$ cd dict $ chmod 777 $ ./main#3. 참조 사이트유튜브유튜브 - 3년 전

작성일 :2021-03-23 08:09 / 조회수: 99회
  • <<
  • 1
  • >>

소개글

원포올 선임 연구원

Kshield Jr. 2기 인증생

Cyber Guardians 수료생

플러터 앱 개발 강사

플라스크 웹 개발 강사

LG 쿠버네티스 보조강사

멀티캠퍼스 악성코드 보조강사

멀티캠퍼스 쿠버네티스 보조강사

금융감독원 쿠버네티스 보조강사

<시스템 해킹 프로토스타> 저자

<안드로이드 앱 개발에 딱 맞는 플러터와 다트 입문> 저자

문의: reasley.com@gmail.com

Category

Project List

Percent

JustCat

TextCount

Weather

Percent

Percent