Python3 メモ
ディレクトリ以下の再帰的探索方法
import glob # test_dir以下を再帰的に探索 for f in glob.glob('test_dir/**', recursive=True): print(f)
スリープ処理
python3でのスリープ処理。精度は何msオーダーになるんだろう?
import time # 引数が秒数 time.sleep(1) # 500msを与える time.sleep(0.5)
UDPでの送受信
UDPでの送受信がしたいときは、以下のように書くと簡単にできる。
ちなみに同期する必要はないので、ノンブロッキングの引数0。
クライアント側(送信側)
""" UDPの送信プログラム """ import socket # 送信先アドレス指定(自分自身) DESTADDR = "127.0.0.1" # 送信先アドレス指定(てきとう) DESTPORT = 12345 # 送信データの内容を指定 # Python3系では文字列リテラルの前にバイナリのbを指定する必要あり SENDMSG = b"send to server" # ソケットオブジェクト生成 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) for i in range(3): # SENDMSGの内容を送信先に送信。とりあえず3回送信。 s.sendto(SENDMSG, (DESTADDR, DESTPORT))
サーバ側(受信側)
""" UDP受信プログラム """ import socket BINDADDR = "" BINDPORT = 12345 # ソケットオブジェクト生成 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 待受インタフェースとポート指定 s.bind((BINDADDR, BINDPORT)) # ノンブロッキングモードで待受 s.setblocking(0) while True: try: data, addr = s.recvfrom(10240) except socket.error: pass else: print("Receive addr:{}, data:{}".format(addr[0], data))
実行結果
Receive addr:127.0.0.1, data:b'send to server' Receive addr:127.0.0.1, data:b'send to server' Receive addr:127.0.0.1, data:b'send to server'