Paepoi » Python Tips » Python Module
Python Module
最終更新日 2019.03.31
コマンドの実行 (subprocess)
#!/usr/bin/env python3 # Python 3.5 で subprocess.run() が追加されました # Popen, call, check_output 等ゴチャゴチャを run でまかなえる import subprocess # 普通に実行、標準出力に書き出しされる subprocess.run(['echo', 'はろーわーるど']) # 標準出力や標準エラー出力が不要な場合 subprocess.run(['echo', '出力は捨てられる'], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) # shell=True にすると半角区切りでもいい、パイプもそのまま cmd = 'cat {} | grep ^\#'.format(__file__) subprocess.run([cmd], shell=True) # テキストファイルの読み込み、CompletedProcess の stdout で得る cp = subprocess.run(['cat', __file__], stdout=subprocess.PIPE, text=True) for line in cp.stdout.split('\n'): if line.startswith('sub'): print(line)
並列処理 (multiprocessing)
#!/usr/bin/env python3 import multiprocessing class MpTest(): def __init__(self): """ 同時実行するため 0..9 の順番がバラバラに表示される例 """ self.n = 10 pool = multiprocessing.Pool() for num in range(10): #pool.apply_async(self.on_pool, args=(num,), callback=self.on_pool_result) # NG pool.apply_async(self.static_pool, args=(num,), callback=self.on_pool_result) pool.close() pool.join() def on_pool(self, num): """ クラスメソッドは参照できない """ return num @staticmethod def static_pool(num): """ もしくはグローバル関数にする """ return num def on_pool_result(self, result): print(result, end=",") if __name__ == '__main__': MpTest()
OS 判別 (platform)
#!/usr/bin/env python3 import platform pl = platform.system() if pl == 'Linux': print('Linux') elif pl == 'Darwin': print('macOS')
日付と時刻 (datetime)
#!/usr/bin/env python3 import datetime print(datetime.datetime.now().strftime('%H時%M分%S秒'))
ローケル (locale)
#!/usr/bin/env python3 import datetime, locale # コレをしないと %c 等が日本語にならない locale.setlocale(locale.LC_ALL, '') print(datetime.datetime.now().strftime('%c'))
Copyright(C) sasakima-nao All rights reserved 2002 --- 2024.