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 --- 2025.