Python チートシート

よく使用されるPythonコードの断片

目次

時折必要になるが、すぐに見つからないことがある。
そのため、ここにすべてを保存しておく。

これらは新しいものではなく、
単なるコピー&ペーストの集まりだが、
自分にとって役立つので、
あなたにとっても役立つかもしれないと思う。

Awesome Python in 3d

一般的なAnacondaコマンド

Condaがインストールされているかを確認

conda -V

Condaが最新かを確認

conda update conda

仮想環境を作成

conda create -n newenvname python=3.12 anaconda

仮想環境をアクティブ化

source activate newenvname

仮想環境に追加のPythonパッケージをインストール

conda install -n newenvname [package]

仮想環境を非アクティブ化

source deactivate

仮想環境を削除

conda remove -n newenvname --all

プログラムの依存関係

依存関係のインストール - requirementsファイルを使用して

個別にパッケージをインストールする代わりに、pipはすべての依存関係をRequirements Fileに宣言できる。
例えば、requirements.txtというファイルを作成し、以下のように記述することができる:

requests==2.18.4
google-auth==1.1.0

そして、pipにこのファイル内のすべてのパッケージをインストールさせるには、-rフラグを使用する:

python3 -m pip install -r requirements.txt

依存関係の凍結

pipは、インストールされているすべてのパッケージとそのバージョンのリストをfreezeコマンドで出力できる:

python3 -m pip freeze

これは以下のような出力になる:

requests==2.18.4
google-auth==1.1.0

pip freezeコマンドは、環境にインストールされているすべてのパッケージの正確なバージョンを再現できるRequirements Fileを作成するのに役立つ。

長方形を描画

import cv2

cv2.rectangle(img, (x1, y1), (x2, y2), color=(255,0,0), thickness=2)

x1,y1 ------
|          |
|          |
|          |
--------x2,y2

以下を追加してみよう:

cv2.imwrite("my.png",img)

cv2.imshow("lalala", img)
k = cv2.waitKey(0) # 0==wait forever

PIL Imageオブジェクトを持っているが、この画像に長方形を描画したい。
OpenCV2を使用して長方形を描画し、その後PIL Imageオブジェクトに戻したい
以下のように行う:

# imはPIL Imageオブジェクト
im_arr = np.asarray(im)
# RGB配列をOpenCVのBGR形式に変換
im_arr_bgr = cv2.cvtColor(im_arr, cv2.COLOR_RGB2BGR)
# pts1とpts2は長方形の左上と右下の座標
cv2.rectangle(im_arr_bgr, pts1, pts2,
              color=(0, 255, 0), thickness=3)
im_arr = cv2.cvtColor(im_arr_bgr, cv2.COLOR_BGR2RGB)
# 再びImageオブジェクトに戻す
im = Image.fromarray(im_arr)

イージーな引数の解析

import json

#---------------------------------------------------------------------------
def do_some_awesomeness(src_file, tgt_file):
    print('Converting some stuff from {} to {}'.format(src_file, tgt_file))

#---------------------------------------------------------------------------
def run():
    import argparse

    parser = argparse.ArgumentParser(description="Some mega useful and efficient python tool.")
    parser.add_argument("-s", "--src", dest="src_file",
        help="input json filename")
    parser.add_argument("-t", "--tgt", dest="tgt_file",
        help="output json filename")
    
    args = parser.parse_args()

    do_some_awesomeness(args.src_file, args.tgt_file)

if __name__ == '__main__':
    run()

以下のように呼び出す:

python ave_roma.py --src 1.json --tgt 2.json

JSONの読み込みと保存

import json

def do_convert(src_file, tgt_file):

    with open(src_file) as f:
        src = json.load(f)

    tgt = src # :)

    with open(tgt_file, 'w', encoding='utf-8') as f:
        json.dump(tgt, f, ensure_ascii=False, indent=4)

拡張子のないファイル名を取得する

import os

print(os.path.splitext("/path/to/some/file.txt")[0])

これは以下を出力する:

/path/to/some/file

有用なリンク