Python備忘
自分用も兼ねた内容です。
基本
import ------
def main():
while True:
#メインの処理
if __name__ == '__main__':
main()
手動ガベージコレクション
import gc
del 変数名
gc.collect()
一定回数を繰り返す
for i in range(2):
#range()の引数に繰り返したい回数を指定
配列を要素の回数繰り返す
for 変数 in 配列:
#変数を一つずつみてゆく
エラーが出る処理について、確実に処理できるまで繰り返す
import time
import pyautogui as pag
while True:
try:
#実行したい処理
img_d = pag.screenshot() #実行したい処理 この場合はキャプチャ
#成功した場合
break #breakでwhileのループを抜ける
except:
#成立しなかった場合、エラーが出た場合などの処理
time.sleep(1) #少し間隔をあける
本日の日付や時間 Y/m/d 00:00:00の形式の場合
from datetime import datetime as dt
tdt = dt.now()
today = tdt.strftime('%Y/%m/%d %H:%M:%S')
画面キャプチャ
import pyautogui as pag
#画面全体をキャプチャ キャプチャ自体は領域指定しないほうが速い
img = pag.screenshot()
#一部をキャプチャ
img_part = pag.screenshot(region=(0,0,800,500)) #基準点のX、基準点のY、幅、高さ
ファイルを複製する
import shutil
old='old.csv'
new='new.csv'
shutil.copyfile(old,new)
プログラムの終了
import sys
sys.exit()
#エラーを発生させて止める様子。なのでtry~except内だと反応する
ウェブページにアクセス(アクセスするのみ)
import requests
url = 'https://----------'
r = requests.get(url)
ウェブから情報を取得する
import requests
import BeautifulSoup
url = 'https://----------'
r = requests.get(url)
soup = BeautifulSoup(r.text,'html.parser')
p_element = str(soup.p) #例 pタグの情報を取得する場合
h1_element = str(soup.h1) #例 h1タグの情報を取得する場合
キー操作
import pyautogui as pag
#一文字送る
pag.typewrite(['x'])
pag.typewrite(['enter'])
#二つのキーを同時に押す場合
pag.hotkey('alt' , 'f')
pag.hotkey("win" , "up")
特定のウィンドウが開いているか判定する(+そのウィンドウを前面に表示させる)
import win32gui
try:
#ウィンドウがあるか ない場合はエラーとなり、except側の処理が実行される
w_hantei = win32gui.FindWindow(None,'ウィンドウの名称')
#以下、ウィンドウがあった場合の処理
#ウィンドウを前面に
win32gui.SetForegroundWindow(w_hantei)
except:
#以下、ウィンドウがない場合の処理
該当の画像が画面内にあるか探す(+その画像部分をクリックする)
import pyautogui as pag
try:
pic_path = './sample.jpg'
p = pag.locateOnScreen(pic_path,confidence=.5) #画像を探す なければエラーとなる。confidenceは感度=どの程度がばっとした相似度か
#以下画像があった場合
x, y = pyautogui.center(p) #該当部分の中心座標を取得
pyautogui.click(x, y) #クリックする
except:
#画像がなかった場合の処理はこちら
pass
ウィンドウ表示を待つ関数
ウィンドウが発生するまで繰り返される(キャッチしたら最前面にし、breakで抜ける)
import time
import win32gui
#--------------------------------
def matsu(window_namae):
#--------------------------------
while True:
try:
w_ob = win32gui.FindWindow(None,window_namae)
win32gui.SetForegroundWindow(w_ob)
break
except:
time.sleep(0.1)
#--------------------------------
別のプログラムを起動・実行
import subprocess
subprocess.Popen('C:/Program Files (x86)/----------------.exe')
ウェブカメラ画像の利用(画像分析) 例5秒ごとに、半分に縮小して画像を保存
import cv2
import datetime
import time
cap = cv2.VideoCapture(0) #カッコ内は環境(カメラの接続状況・台数によって変わる)
while cap.isOpened():
ret,frame = cap.read()
if ret == True:
#画像を取得できている際の処理を以下に 以下は例
#ウィンドウに表示
cv2.imshow('frame',frame)
#中止の処理
key = cv2.waitKey(1) & 0xFF
if key == ord('q'):
break
#画像を縦半分、横半分にリサイズ
dst = cv2.resize(frame,dsize=None,fx=0.5,fy=0.5)
#画像を保存する
dt = datetime.datetime.today()
fnm = dt.strftime('%Y%m%d_%H%M%S')
fileName = fnm + '.png'
cv2.imwrite(fileName, dst)
time.sleep(4)
cv2.destroyAllWindows()
cap.release()