Python


デバッグ方法


uv: Rust製の高速なパッケージマネージャ

記事:


Pyarmor: スクリプトの難読化


venv/virtualenv

記事:


最適化問題の解法

記事:


入門


ライブラリ


module pathの表示


行末の改行の削除


簡易httpサーバ


文字コード変換


CSV/TSVの処理


pandas: データ分析支援ライブラリ


並列処理


Webスクレイピング


Apache Parquet形式を扱う: 列指向のデータフォーマット


書式付き文字列


memory-profiler: メモリ使用量の計測


dockerイメージ


CLIツール作成


パフォーマンス/最適化


変数の型


パッケージ管理/バージョン固定

記事:


asyncio: 非同期実行


検証/Validation


グラフ描画


ベンチマーク


コーディング規約


構文チェック

他言語のように構文チェック用のコマンドラインオプションは無いようだ。

autopep8

pip install autopep8

pylint

pip install pylint astroid --pre -U
pylint --generate-rcfile > ~/.pylintrc

-m


バージョン間の互換性


テキストに色を付ける/エスケープシーケンス


envを指定する時


subprocess : 外部コマンド実行


例外発生時にstack traceの表示


InsecurePlatformWarningの抑制


yamlの読み書き


pudb: CUIだけどグラフィカルなデバッガ

pythonデフォルトのデバッガはpdbだが、前後のソースコードが表示されないため、分かりにくい。
pudbはMain, Variables, Stack, Breakpoints画面に分割されるため操作しやすい。

コマンド説明
?ヘルプ
q終了
nステップオーバー
sステップイン
rリターン
bブレークポイント

pdb: 標準デバッガ


httplib2でエラーが出た場合


autopep8: ソースコードを自動でPEP8形式に整形


モジュール一覧の取得

python -c "help('modules')"

var_dump: PHP風オブジェクトダンプ

pprint()では文字列、数値、リストといった特定のオブジェクトしかダンプしてくれない。
PHPのvar_dumpはクラス内部の変数もダンプしてくれて便利だったので、似たようなものがあった。

WOL(Wake on LAN)


isinstance : 変数の型を調べる

print isinstance("test", str) # True
print isinstance(10, int) # True

ping


簡易ポートオープンチェック


三項演算子

分岐して代入処理が1行で書ける


slappasswd互換の{SSHA}, {SHA}形式の生成

# -*- coding: utf8 -*-
import os
import hashlib
import base64

def slappasswd(password, password_scheme, salt=os.urandom(4)):
    hash = False
    if password_scheme == "{SSHA}":
        ctx = hashlib.sha1()
        ctx.update( password )
        ctx.update( salt )
        hash = "{SSHA}" + base64.b64encode( ctx.digest() + salt )
    elif password_scheme == "{SHA}":
        ctx = hashlib.sha1()
        ctx.update( password )
        hash = "{SHA}" + base64.b64encode( ctx.digest() )
    return hash

print slappasswd('secret', '{SSHA}') # {SSHA}QYkKRfdg3uEIajHpiyYXxUJSBqaZTRod
print slappasswd('secret', '{SHA}')  # {SHA}5en6G6MezRroT3XKqkdPOmY/BfQ=

ヒアドキュメント中で変数参照


複数階層のディレクトリ削除


re: 正規表現


tempfile: 一時ファイル/ディレクトリ


ヒアドキュメントの行頭スペースを削除

    message = """
default
message
"""[1:-1]
    print(message)

日付/時刻/タイムゾーン


sys.argv : コマンドライン引数


logging


特殊変数


ソースコードにUTF-8を使う


has_key : 辞書側でキーを持っているかを調べる

d = {'hoge': 100, 'foo':200, 'bar':300}
if d.has_key('hoge'):
    print 'hoge found!'

hasattr : 属性があるかどうかを調べる


チートシート

BASIC認証ページを取得

urllib.FancyURLopenerをオーバーライドしてID/PASSを返してやれば良い。

 import urllib

 class MyURLopener(urllib.FancyURLopener):
 	def prompt_user_passwd(self, host, realm):
 		if host == 'ホスト名':
 			return ('ID', 'Password')

 def execute(hdf, args, env):
 	opener = MyURLopener({})
 	f = opener.open('https://svn.example.com/projects/ppc/wiki/FctlPpc/mysql')
 	print f.read()
 	f.close()

 execute(1,2,3)

pyスクリプトをexe形式に変換

記事:


添付ファイル: fileexample-yaml.zip 2200件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2024-11-18 (月) 12:20:40