Python メモ

Page content

Python でスクリプトを書いていたときのメモ。

markdown frontmatter

pip install  python-frontmatter
import frontmatter

    post = frontmatter.load(file)
    print(post['title'])
    print(post.content)

assertion - unit test

unittest — Unit testing framework — Python 3.10.1 documentation

  • assertEqual(a, b)
  • assertNotEqual(a, b)
  • assertTrue(x)
  • assertFalse(x)
  • assertIs(a, b)
  • assertIsNot(a, b)
  • assertIsNone(x)
  • assertIsNotNone(x)
  • assertIn(a, b)
  • assertNotIn(a, b)
  • assertIsInstance(a, b)
  • assertNotIsInstance(a, b)

unit test ベース

from unittest import TestCase


class TestFoo(TestCase):
    def setUp(self) -> None:
        print("setup")

    def tearDown(self) -> None:
        print("tearDown")

    def test_function(self):
        self.fail()

PyCharm でテストケースを作成する

いつものコマンド。 Ctrl + Shift + T

JSON パース

ref json — JSON エンコーダおよびデコーダ — Python 3.10.0b2 ドキュメント

import json

json_text = '{"x": 1, "y": 2, "z": 3}'
v = json.loads(json_text)
v['x']    # 1

ファイル読み込み

with open(file, mode='r', encoding='utf-8') as content_file:
    content = content_file.read()

例外

ref. 組み込み例外 — Python 3.10.0b2 ドキュメント

dict に指定したキーが存在するかを確認する

ref python - Check if a given key already exists in a dictionary - Stack Overflow

d = {"key1": 10, "key2": 23}

if "key1" in d:
    print("this will execute")

if "nonexistent key" in d:
    print("this will not")

存在しないことを確認するなら

if "keyX" not in d:
    print("this will not")

型ヒントで自クラスを指示する

ref python - putting current class as return type annotation - Stack Overflow

AND 条件

cond_a and cond_b

dict をフィルターする

foodict = {k: v for k, v in mydict.items() if k.startswith('foo')}

ref. python - Filter dict to contain only certain keys? - Stack Overflow

引数のデフォルト値を設定する

def do(n_from=0, n_to=0):