개발 꿀팁/PYTHON

파이썬의 다양한 방법 목록

Jammie 2022. 11. 24. 10:33
반응형

스레드 휴면
import time

휴면이 필요한 곳에 적는다.

time.sleep(xxx)

xxx는 대응하는 시간으로, 단위는 초이다.

현재 시간 가져오기
import datetime

datetime.datetime.now()

MySQL 데이터베이스
pip install pymysql

delete할 때 commit 함수를 호출해야 합니다. 그렇지 않으면 프로그램이 실행되지만 데이터베이스는 변경되지 않습니다.

datetime.datetime.now () 의 현재 시간을 MySQL 데이터베이스의 표에 삽입합니다.
표의 필드는 DateTime 형식입니다.

파이썬의 datetime.now()가 돌아오는 시간 형식은 '2022-09-1108:00:43.530128'이다.

mysql의 datetime 포맷 요청은 '2022-09-1108:00:43'이다.

python의 시간을 mysql에 삽입하려면 포맷을 바꿔야 합니다.

datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

양수 및 음수 변환
음수 양수: abs(n)

양수-음수 변환:int("-" + str(n))

dict( ) 함수
사전을 만들다.

>>>dict() # 빈 사전 만들기
{}
>>> dict(a='a', b='b', t='t') # 키워드 가져오기
{'a': 'a', 'b': 'b', 't': 't'}
>>> dict(['one', 'two', 'three', [1, 2, 3])) # 매핑 함수 방식으로 사전을 만듭니다.
{'three': 3, 'two': 2, 'one': 1}
>>> dict([('one', 1', 'two', 2', 'three', 3)] # 반복 가능한 객체 방식으로 사전을 만듭니다.
{'three': 3, 'two': 2, 'one': 1}
>>>

정돈하다
위쪽으로 정돈하다

math.ceil( x )

아래로 다듬다

math.floor( x )

자증과 자감
python에서는 자가증가 및 자가감소가 없지만 python에서는 i = i+1 및 i = i-1이 존재합니다. 파이썬의 모델은 수치 대상을 변경할 수 없다고 규정하고 있기 때문입니다. i = i + 1은 i의 값을 변경하는 것이 아니라 변수 i를 다시 만드는 것과 같습니다.

소수점 n자리 유지
round 함수 예: a=12.34567889 round(a,2)=12.35 두 자리 소수 round(a,2)=12.35 세 자리 소수 예약

PriorityQueue
PriorityQueue는 우선순위 큐입니다.작을수록 우선순위가 높아서 먼저 꺼냅니다.

우선 순위 대기열은 요소를 삽입할 때 요소를 정렬하고 가장 작은 요소를 줄 끝에 놓습니다.

Python은 tuple 유형을 비교할 때 요소의 순서에 따라 비교할 수 있는 첫 번째 요소를 찾습니다.

멀티프로세싱의 예
동시에 queue와 pipe의 용법을 보여주며 image_put, image_get, predict 함수의 매개변수가 대응되어야 합니다

큐의 데이터는 get() 방식으로, pipe는 recv() 방식으로 얻는다

import multiprocessing as mp
 
pipe = mp.Pipe()
mp.set_start_method(method='spawn')  # init
    queues = [mp.Queue(maxsize=4) for _ in camera_ip_l]
 
    processes = []
    for queue, camera_ip in zip(queues, camera_ip_l):
        processes.append(mp.Process(target=image_put, args=(queue, user_name, user_pwd, camera_ip)))
        processes.append(mp.Process(target=image_get, args=(queue, camera_ip,pipe[0],)))
 
    processes.append(mp.Process(target=predict, args=(pipe[1],)))
 
    for process in processes:
        process.daemon = True
        process.start()
    for process in processes:
        process.join()

Python 3 generator의 next 메서드
g.next() g._next_()로 변경

g.next()는 python 2의 용법이다.

상급자 혹은 상급자 목록에 있는 문서를 인용하다
상부에서 인용하다.

import sys

sys.path.append("..")

상부에서 인용하다.

import sys

sys.path.append("...")

astype()
배열의 데이터 유형을 변환합니다.

int32 --> float64 완전ojbk

float64 --> int32는 소수 부분을 잘라냅니다

string_ --> float64 문자열 배열이 모두 숫자일 경우, astype을 사용하여 숫자 형식으로 변환할 수 있습니다

super()
super() 함수는 상위 클래스(슈퍼 클래스)를 호출하는 데 사용되는 방법입니다.

super는 다중 상속 문제를 해결하기 위해 클래스 이름으로 직접 부류를 호출하는 방법은 단일 상속을 사용할 때 문제가 없지만 다중 상속을 사용할 경우 찾기 순서(MRO), 반복 호출(다이아몬드 상속) 등 여러 문제가 발생합니다.

MRO는 클래스의 메소드 해석 순서표이며, 사실은 부류의 메소드를 계승할 때의 순서표이다

#!/usr/bin/python
# # -*- coding: UTF-8 -*-

class FooParent(object):
def __init__(self):
self.parent = 'I\'m the parent.'
print ('Parent')

def bar(self,message):
print ("%s from Parent" % message)

class FooChild(FooParent):
def __init__(self):
# super( FooChild, self) 먼저 FooChild의 부모(예: FooParent)를 찾은 다음 FooChild의 개체를 FooParent의 개체로 변환합니다.
super(FooChild,self).__init__()
print ('Child')

def bar(self,message):
super(FooChild, self).bar(message)
print ('Child bar fuction')
print (self.parent)

if __name__ == '__main__':
fooChild = FooChild()
fooChild.bar('HelloWorld')

파이썬 레인지 함수
python range () 함수는 정수 목록을 만들 수 있습니다.

함수 구문 range (start, stop[, step])

매개 변수

start: 카운트는 start부터 시작합니다.기본값은 0부터 시작합니다.예를 들어 range(5)는 range(0,5)와 동등하고 stop: stop이 끝날 때까지 계수하지만 stop은 포함하지 않습니다.예를 들어 range(0, 5)는 [0, 1, 2, 3, 4]입니다. 5step 없음: 스텝 길이, 기본값은 1입니다.예: range(0, 5)는 range(0, 5, 1)와 동등합니다.

역순

for i in range(5, -1, -1)

역순서의 경우 마지막으로 역순서를 나타내는 -1을 정의해야 하며 -1의 단계 길이를 나타냅니다.

플러스 마이너스 무한
float("inf"), float("-inf")

폴더 아래의 모든 파일 삭제

def del_file(path_data):
for i in os.listdir(path_data): # os.listdir(path_data) # 현재 디렉토리 아래에 있는 모든 것의 상대 경로 목록을 반환합니다.
file_data = path_data + "/" + i# 현재 폴더 아래에 있는 모든 것의 절대 경로
if os.path.isfile(file_data) == True:#os.path.isfile은 파일인지 여부를 판단하고 파일이라면 삭제합니다. 폴더라면. del_file로 재귀합니다.
os.remove(file_data)
else:
del_file(file_data)
path_data = r"E:\code\practice\data"
del_file(path_data)

파일을 복사하다
방법은 많은데 저는 shutil.copy를 많이 씁니다

shutil.copy(source, destination)

이미지 처리
다음 링크 참조:

파이썬의 다양한 방법 목록 - 이미지 처리_하늘에 뜬 구름 한 점의 블로그 - CSDN 블로그

numpy 관련
다음 링크 참조:

파이썬의 다양한 방법 목록 -NumPy_하늘에 뜬 구름의 블로그 - CSDN 블로그

xls 또는 scv 처리
Python의 다양한 방법 목록 - xls 또는 csv 처리

새 개체 생성
python에서 객체는 값을 부여한 후 동일한 주소이며, 가변 객체의 경우 수정 중 하나가 다른 객체에 영향을 미치므로 완전히 새로운 객체를 생성하려면 deepcopy를 사용해야 합니다.

import copy

data1=copy.deepcopy(data)

교환값
arr[i], arr[j] = arr[j], arr[i]

프린트
python의 print 문자열 앞에 f를 붙이면 형식화된 문자열을 나타내고, f를 붙이면 문자열 안에 괄호로 묶은 변수와 표현을 사용할 수 있으며, 문자열 안에 표현이 없으면 앞에 f를 붙이든 안 붙이든 똑같이 출력해야 합니다.

정수 분할 반환 부동 소수점 수

파일 첫 번째 줄

from __future__ import division

그리고 나누어진 코드를 정상적으로 작성하시면 됩니다.

키보드 입력 읽기

# # -*- coding: utf-8 -*-

import sys

#입력하신 것은 무엇이든 문자와 문자열로 변환됩니다
#sys.stdin.readline( )은 끝의 '\n'을 읽고, .strip( )을 추가하며, 리턴 문자를 지우고, 앞뒤의 공백을 제거합니다.

# 하나
#숫자 입력
n = int(sys.stdin.readline( ).strip()) # 요소를 입력하고 int로 변환
print(n)

# 이
#n행(알고 있는 행의 수 n)을 입력하고, for로 순환하며, 한 줄에 임의의 문자열이 있으면 된다.
seq = [ ]
for i in range(n):
line = sys.stdin.readline( ).strip( ) #line은 문자열 목록입니다. line의 요소가 몇 개인지 알 수 없습니다.
value = map(int, line.split()) #map(함수, 목록) Python2. 목록을 반환하고 Python3. 반복기를 반환합니다.
seq + = value # 목록 병합
print(seq)

# 삼
#몇 줄 입력했는지 확실하지 않고 while로 순환
seq = [ ]
while 1:
line = sys.stdin.readline( ).strip( ) #line은 문자열 목록이며 앞뒤 공백 리턴 문자를 삭제했습니다.
if line:
line = map(int, line.split()) #line의 공백 요소를 제거하고 문자열 목록 list로 변환, 정형 int로 변환
else:
break
seq += line
print(seq)

 

반응형