操作
- datetime
-
dateyear, month, day -
timehour, minute, second, microsecond, tzinfo -
datetimeyear, month, day, hour, minute, second, microsecond, tzinfo -
timedeltadays, seconds, microseconds- コンストラクタ引数には weeks, milliseconds 等も指定可能
-
datedatetimeインスタンスの差を表す
- 注意メソッド
-
date.weekday()曜日を int 取得 (月0,...,日6) -
date.isoweekday()曜日を int 取得 (月1,...,日7) -
isocalendar()nemed tuple (year, week, weekday) を取得 (ISO 歴 の年、週番号、曜日)- ISO歴
- 最初の木曜日を含む週が、その年の第1週である (その年の第1週は、1月4日を含む週である)
- ※ 1/1 - 1/3 は、前年の最終週に含まれることがある
- ※ 12/29 - 12/31 は、次年の第1週に含まれることがある
- 週は1から始まり、52 または 53 までとなる
- 曜日は 月1,...,日7
- 例 : 2025年1月1日は水曜日なので (year=2025, week=1, weekday=3)
- 2025年の第1週は(2024年)12/30(月)から開始している
- 例 : 2027年1月1日は金曜日なので (year=2026, week=53, weekday=5)
- 2027年の第1週は1/4(月)から開始している
>>> from datetime import date >>> date20270101 = date(2027, 1, 1) >>> date20270101 datetime.date(2027, 1, 1) >>> date20270101.isoformat() '2027-01-01' >>> date20270101.isocalendar() datetime.IsoCalendarDate(year=2026, week=53, weekday=5) # 2027-01-01 は 2026年の第53週 - 最初の木曜日を含む週が、その年の第1週である (その年の第1週は、1月4日を含む週である)
- ISO歴
-
strftime(format)書式指定通りに文字列出力-
datetimedatetimeのインスタンスメソッド - date では時刻部分は 0 とみなす
- time では日付部分は 1900-01-01 とみなされた (実験結果)
-
-
strptime(str, format)書式文字列から指定文字列をパースしてdatetimeオブジェクトを作成する-
datetimeのクラスメソッド (※datetimeには同名メソッドは無い)
-
-
- 書式コード (注意が必要なもの)
-
%y西暦下2桁、%Y西暦4桁 -
%a曜日名短縮形 (Sun, Mon, ...)%A曜日名 -
%w曜日十進表記 (日,月,...,土 → 0,1,...,6)- ※weekday(), isoweekday() どちらとも異なる
-
%U年の最初の日曜から土曜を 01 とした週番号 (新年の初日曜より前の日は 00 に属する) -
%W年の最初の月曜から日曜を 01 とした週番号 (新年の初月曜より前の日は 00 に属する) -
%H時 (00-23)、%I時 (01-12) -
%fマイクロ秒 (6桁ゼロ埋め) -
%pAM, PM -
%zタイムゾーン名 () -
%%文字% - ISO (ISO-8601) 互換用の書式
-
%VISO歴の週番号 -
%uISO歴の曜日十進表記 (月,火,...,日 → 1,2,...,7)
-
- ロケールに合わせた一括コード
-
%c日時 (年月日時分秒曜日) -
%x日付 (年月日) -
%X時刻 (時分秒)
-
-
-
- 組み込み関数 sorted, reversed
-
sorted(iterable, key=None, reverse=False)iterable の要素を並べ替えた新たなリストを返す -
reversed(object)object 要素を逆順としたイテレータを返す
-
- list.sort(), list.reverse()
- list のインスタンスメソッドで、list インスタンスを変更する破壊的操作となる
-
sort(key=None, reverse=False)key, reverse に従い並べ替える -
reverse()要素の並びを逆転させる (ミュータブルシーケンス一般に実装(されるべき)操作)
-
- 戻り値は None
- list のインスタンスメソッドで、list インスタンスを変更する破壊的操作となる
- operator.itemgetter(), operator.attrgetter()
-
sort()sorted()等の引数 key への活用に便利な関数 -
itemgetter(item)itemgetter(*items)[]で取得できる値の取得- 複数指定して key に使えば、要素(イテレータ等)内の任意要素でソート順を指定できる
-
attrgetter(attr)attrgetter(*attrs).(ドット)で取得できる値の取得- 複数指定して key に使えば、要素(属性持ちオブジェクト)内の任意属性でソート順を指定できる
-
- collections.Counter
Counter([iterable-or-mapping])- 辞書を拡張したクラス
- カウント済み要素をキー、その出現数を値 (整数) として保持
- カウント済みの要素を
[]で指定して数を取得できる - カウント対象に存在しない要素を
[]指定してもエラーにならず 0 を返す - 後からカウントを増減もできるし、新たな要素に対していきなり数を割り当てても OK
-
elements()「キーを値分繰り返す」を全要素に対して繰り返すイテレーターを返す (値が0以下のキーは除かれる) -
most_common([n])値が大きな要素順にタプル(キー, 値)を並べたリストを返す (n 指定なら最大 n 個のタプルを含む) subtract(iterable-or-mapping)update(iterable-or-mapping)
- collections.defaultdict
- 辞書の拡張で、保持していないキーへのアクセス時に返す内容を予め決められる (辞書では無条件にエラー)
-
defaultdict(default_factory=None, /[, ...])- default_factory には呼び出し可能オブジェクトを設定
- collections.namedtuple
-
namedtuple(typename, field_names)typename というクラスが返される (tuple のサブクラス)
>>> from collections import namedtuple >>> Pet = namedtuple('Pet', 'animal, name, age') # Pet型を作成 >>> seven = Pet('ferret', 'せぶん', 3) # Pet型のインスタンスを作成 >>> seven # 「名前=値」の形式で確認できる Pet(animal='ferret', name='せぶん', age=3) >>> michiko = Pet('cat', 'ミチコ', 1) # 別のインスタンスを作成 >>> michiko Pet(animal='cat', name='ミチコ', age=1) >>> seven.age # 属性名で値を取得 3 >>> seven[1] # インデックスでもアクセスできる 'せぶん' >>> animal, name, age = michiko # アンパック代入も可能 >>> animal 'cat' -
- enum
-
enum.Enumを継承したクラスのデータ属性として定数定義- 値に
enum.auto()を指定すると、1 から順に整数を割り当てる
- 値に
-
enum.uniqueenum.Enum 継承クラスへのクラスデコレーターとして使用し、複数定数への同一値の割り当てを禁止する (ValueError送出)
-
- itertoos
-
zip_longest(*iterables, fillvalue=None)- 組み込み関数
zip()と同様に、指定イテラブルの同一インデックスを並べた タプル を取得するイテレーターを返す -
zip()と共に、辞書が指定された場合はキーが取得対象となる -
zip()との違いは、イテレーター出力数が引数内の最長イテラブルに合わせた要素数であること (zip() は最短イテラブル要素数) - fillvalue の値で、足りない要素が埋められる
- 組み込み関数
-
chain(*iterables)要素を接続したイテレーターを返す -
groupby(iterable, key=None)- イテラブル要素を key で取得した値ごとに等価な内容にグループ化する (ただし、連続する要素のみをグループ化)
- 全体としては 2要素タプルのイテレーター
- 各要素 (2要素タプル) は (グループキー, グループ内要素を返すイテレーター) の形
-
islice(iterable, stop)islice(iterable, start, stop[, step])- スライスと同様の指定範囲を返すイテレーターを返す
-
product()permutations()combinations()combinations_with_replacement()
-
- copy
-
copy()deepcopy()
-
- os
- 環境変数関連
-
os.environマップ型オブジェクト- python プロセス起動時に環境変数を読み込み、値が設定される
- 辞書インタフェースでキーに環境変数名を指定して取得、設定可能 (プロセス内でのみ有効な変更)
-
os.putenv()で環境変数への設定が可能だが、os.environへ反映されない (os.environ を変更した場合にはputenv()が呼ばれる) -
os.unsetenv()での環境変数の削除もputenv()と同様にos.environの要素削除を行わない (os.environ の要素削除時 (del) にはunsetenv()が呼ばれる)
-
- プロセス関連 (環境変数以外)
-
getuid()geteuid()getgid()getegid()getpid()getpgid()getppid()getgroups() - get に対応する関数
set*()
-
- ファイル関連
- 関数
-
chdir()chmod()chown() -
getcwd()listdir() -
mkdir()makedirs() -
remove()rmdir()removedirs() -
rename()renames() symlink()
-
- 定数
-
curdirpardir -
sepextseplinesep
-
- 関数
- システム情報
-
confstr_namesconfstr(name) -
sysconf_namessysconf(name) -
cpu_counts()CPU 数 -
getloadavg()過去1, 5, 15 分間のロードアベレージ (float 3 要素のタプル)
-
-
urandom(n)n バイトのランダム bytes を生成
- 環境変数関連
- io
- インメモリテキストストリーム
StringIO-
read()write()seek()tell()getvalue()close()
-
- インメモリバイナリストリーム
BytesIO- StringIO メソッドに加え、
getbuffer()書き換え可能
- StringIO メソッドに加え、
- seek() の第2引数に指定する値
-
io.SEEK_SETストリーム先頭 -
io.SEEK_CUR現在位置 -
io.SEEK_ENDストリーム末尾
-
- インメモリテキストストリーム
- sys
-
sys.argvコマンドライン引数のリスト (list[str]) -
sys.pathimport での検索パスのリスト (list[str]) 以下で初期化される- 実行スクリプトのあるパス
- 環境変数 PYTHONPATH のパス
- Python インストール先
- 関数
exit([obj])Python を終了する- 引数無し : 終了ステータス 0 で終了
- 引数が数値 : 指定値を終了ステータスとして終了
- 引数が数値以外 : 引数を文字列化して stderr へ出力し、終了ステータス 1 で終了
- SystemExit 例外を送出するので、捕捉可能 (終了の中断等も可能)
-
sys.stroutsys.stderrsys.stdinはファイルオブジェクトであり、read()write()が使用可能 (ただし以下の通り片方のみ使用できる)-
stdoutstderrは出力専用 -
stdinは入力専用
-
-
sys.breakpointhook()- 組み込み関数
breakpoint()が呼び出す呼び出し可能オブジェクトを指定 (デフォルトはpdb.set_trace()) - 環境変数 PYTHONBREAKPOINT への設定でも等価
- 組み込み関数
-
sys.version_infoPython のバージョン情報- major, minor, micro, releaselevel, serial の 5要素タプル
- 各名前の属性アクセスも可能
-
- argparse
-
ArgumentParser引数設定すると、コマンドヘルプの生成、実引数のパースとプログラム中での引数利用が可能となる -
add_argument()引数設定を加える -
parse_args()実引数をパースして argparse.Namespace オブジェクトの属性へ引数を割り当て、そのオブジェクトを返す- 返されたオブジェクトは、引数名の属性の値が対応する引数の値となっている
-
- pathlib
- クラス継承
classDiagram PurePath <|-- PurePosixPath PurePath <|-- PureWindowsPath PurePath <|-- Path PurePosixPath <|-- PosixPath Path <|-- PosixPath Path <|-- WindowsPath PureWindowsPath <|-- WindowsPath -
PurePath純粋パス- インスタンス変数
-
partsパスの各要素の タプル -
driverootanchor -
parentsPath インスタンスのシーケンス -
parentPath インスタンス -
namesuffixsuffixesstem
-
- インスタンスメソッド
is_absolute()is_relative_to(*other)-
match(pattern)glob 形式 pattern に自身がマッチするか -
with_name(name)with_stem(stem)with_suffix(suffix)name, stem, suffix 部を置換した Path を返す
- インスタンス変数
-
Path具象パス- クラスメソッド
-
cwd()home()
-
- インスタンスメソッド
stat()-
glob(pattern)自ディレクトリ内の pattern (glob) にマッチするファイル・ディレクトリをパスオブジェクトとして返すジェネレーターを返す -
iterdir()自ディレクトリ内の全ファイル・ディレクトリをパスオブジェクトとして返すジェネレーターを返す -
exists()is_dir()is_file()チェック -
chmod()rename()ファイル変更操作 -
touch()mkdir() -
unlink()(ファイル削除)rmdir()(空ディレクトリ削除) open()-
read_text()write_text()開いて、読み/書き、閉じる
- 基本的に Path での複数情報取得はジェネレーターみたい
- クラスメソッド
- クラス継承
- tempfile
- 一時ファイル/ディレクトリ作成
- コンテキストマネージャーとして使用可能
- as での取得は一時ファイルは ファイルオブジェクト 、一時ディレクトリは ディレクトリパス文字列
- with を抜ける際にファイル/ディレクトリ削除も行われる
- NamedTemporaryFile は delete=False で残すことも可能
- ディレクトリはその下のファイルも全部削除
-
TemporaryFileファイル名無しファイルをディスク上に作成 -
NamedTemporaryFileファイル名ありファイルをディスク上に作成- ファイルシステムが認識できるのでプロセス外から参照可能
-
SpooledTemporaryFileファイル名無しファイルを一定容量までメモリ上に作成し、容量を超えるとディスクへ書き出す -
TemporaryDirectory一時ディレクトリを名前ありで作成
- shutil
-
copyfile(src, dst)dst はファイルパス (ディレクトリパスは不可) -
copy(src, dst)copy2(src, dst)dst はファイルパスまたはディレクトリパス- dst がディレクトリパスなら、その下に src のベースファイル名でコピーされる
- copy はパーミッションをコピーする
- copy2 はメタデータもコピーする
-
copymode(src, dst)copystat(src, dst)
-
- csv
-
reader(file)csv の各行を1リストとして扱う reader オブジェクトを取得- reader オブジェクトは for 文で読み込むことで、ループ1回につきファイル内の1行分を1リストとして取得できる
-
writer(file)csv としてデータを書き込むことができる writer オブジェクトを取得- writer オブジェクトは
writerow(row)で 1 行を書き込み、writerows(rows)で複数行の書き込みを csv ファイルへ行う-
rowイテラブル -
rowsイテラブルのイテラブル (イテラブルでも動作するかも? (1行だけ書き込みたいとか))
-
- writer オブジェクトは
-
DictReader(file, fieldnames, ..)を使用すると、読み込んだ csv データを辞書インターフェースで参照できる -
DictWriter(file, fieldnames, ..)を使用すると、辞書データを任意の順序 (fieldnames で指定) でファイルへ書き出せる
-
- json
- JSON 文字列
-
dumps(obj)obj を json 文字列として返す -
loads(s)文字列 s を Python オブジェクトとして返す
-
- JSON ファイル
-
dump(obj, file)obj を json 文字列にして file へ書き出す -
load(file)file に記載の json 文字列を Python オブジェクトとして返す
-
- JSON 文字列
- urllib.parse
-
urlparse(s)文字列 s を URL としてパースした結果を返す (ParseResult) -
ParseResult- パース結果は属性名またはインデックスで参照
- 辞書キーを属性名で指定も OK
-
scheme0 -
netloc1 -
path2 -
params3 -
query4 -
flagment5 usernamepasswordporthostname
- パース結果は属性名またはインデックスで参照
- クエリのパース
- クエリが
key1=aaakey2=bbbkey3=cccの場合 -
parse_qs()は辞書を返し、同一キーは値リストにまとめる{'key1': ['aaa'], 'key2': ['bbb', 'ccc']}
-
parse_qsl()はタプルのリストを返し、同一キーも分ける[('key1', 'aaa'), ('key2', 'bbb'), ('key3', 'ccc')]
- クエリが
- クエリの組み立て
-
urlencode(query)マッピングか2要素タプルのリストを受け取り、組み立ててエンコードしたクエリ文字列を返す
-
-
quote()quote_plus()URL として使用できる文字列へエンコード- 特殊文字や複数バイト文字に対してパーセントエンコードを行う
- スペースの変換 : quote() は
%20へ、quote_plus() は+へ
-
urljoin(base, url)base 部分へ url 部分を結合する- 共通部分を表す base に対して url で分岐させる
- url は相対パスでもよいので
..で base の一部も上書きできる
-
- urllib.request
-
urlopen(url, data)url へアクセスしてレスポンスオブジェクトを返す- HTTP, HTTPS ならレスポンスは
http.client.HTTPResponse - その他なら
urllib.respnse.addinforul- 属性
urlheadersstatus
- 属性
- HTTP の場合、 url に文字列を指定してのリクエストは以下に限定
- data 指定なしの GET
- data を指定しての POST
- その他の HTTP メソッドは、
Requestオブジェクトを url に指定する
- HTTP, HTTPS ならレスポンスは
Request(url, data, method)
-
- doctest
- コード内での実行は
testmod()testfile()- testfile では引数に外部のテキストファイルを指定可能
- unittest でのテストに組み込む
-
load_tests()は unittest が探して呼び出す仕組み -
DocTestSuite()は doctest の内容を unittest 向けに変換 -
addTests()で unittest のテストとして追加
import unittest import doctest import my_module_with_doctests # 自分で書いたモジュール def load_tests(loader, tests, ignore): tests.addTests(doctest.DocTestSuite(my_module_with_doctests)) return tests -
- コード内での実行は
- unittest
- コード内での実行は
main() - コマンドライン実行では、対象のオブジェクトパスを指定
python -m unittest module1.testcase1.testmethod1- 対象はモジュールでもクラスでもメソッドでも、複数でも OK
- コード内での実行は
- logging
- 汎用的な使用法としてはロガーを
getLogger()で取得してから、メソッドerror()info()等でログ出力する - モジュールの関数を使用することで、ルートロガーでログ出力できる
-
critical()error()warning()info()debug() - 引数はメッセージ文字列で、
%s等を含めた場合は後続の引数の値を展開できる
-
-
basicConfig()ロギングの設定変更で、以下の引数あり-
filenamefilemode -
formatログフォーマット -
datefmt日時フォーマット -
styleformat で使用するスタイル%(デフォルト){$ -
levelログレベル閾値 streamhandlersforceencodingerrors- 出力先設定は同時に指定不可 (filename, stream, handlers)
-
- 汎用的な使用法としてはロガーを
- secrets
-
choise(seq)seq からランダムに選択して返す - トークン
-
token_bytes([nbytes=None])バイト列生成 -
token_hex([nbytes=None])16進数文字列生成 (1byte = 16進数2文字) -
token_urlsafe([nbytes=None])URL向け(Base64エンコード)文字列生成 (1byte = 平均1.3文字) -
compare_digest(a, b)タイミング攻撃耐性のある比較
-
-
Tatsuya ISHIGAKI さんが4ヶ月前に更新 · 1件の履歴