Paepoi

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