Open4

バックエンド学習日記

kotouchablekotouchable

venvの仮想環境の入り方

myvenv/Scripts/activateというコマンドを打ってもzsh: no such file or directory: myvenv/Scripts/activateと返却される。

どうやらmacではsource myvenv/bin/activateと入力する必要があるらしい。

kotouchablekotouchable

Dictionaries (dict)

  1. Declaration
    Standard Declaration

    d = {'key1':’value1', 'key2': 'value2'}
    

    Using the dict()Function ①

    d = dict(key1="value1", key2="value2")
    

    Using the dict()Function ②

    d = dict([('key1':’value1'), ('key1':’value1')])
    
  2. Retrieving Values
    Using [key]

    d['key']
    

    Using the get()Method

    d.get('key')
    
  3. Updating Dictionaries
    Using the update()Method

    d1 = {'a':10, 'b':20}
    d2 = {'a':1000, 'c': 30}
    d1.update(d2)
    print(d1) # {'a': 1000, 'b': 20, 'c': 30}
    
  4. del statement

    d = {'a':10, 'b':20}
    del d['a']
    print(d)  # {'b':20}
    
  5. clear() method

    d = {'a':10, 'b':20}
    d.clear()
    print(d)  # {}
    
  6. How to check if a key exists

    d = {"a": 10, "b": 20}
    print("a" in d)  # True
    print("c" in d)  # False
    
kotouchablekotouchable

zshのプロンプト表示形式を変更する。

目的

zshの表示形式をuser_name@computer_name current_dir %みたいな表示がとても鬱陶しいので、カレントディレクトリだけを表示したい。

.zshrcに環境変数 PS1を設定

カレントディレクトリまでのパスを表示する場合

export PS1="%~ $ "

カレントディレクトリ名だけを表示する場合

export PS1="%. $ "
kotouchablekotouchable

Windowsのコマンドで躓いたこと

躓いたこと

普段はmac or linuxなので、Powershell用のコマンドを実行しようとしたときに躓いた。
入力したコマンド

mkdir -p hoge\foo

出力結果

(current)
┣ -p
┗ hoge
        ┗foo

そんなはずでは。。。

原因

-pオプションはPowershellのmkdirにはなかったらしい。
Powershellではmkdirコマンドを使用すれば再帰的にディレクトリを作ってくれるみたい。
ただし、Powershellのmakedirにはディレクトリが既に存在している場合にエラーが発生する。なんかいい感じのオプションが無いかなーと思って探していたんですが、見つかりませんでした。

対応

そこで、shellコマンドを起動していたのはPythonファイル(subprocess)だったので、subprocessでmkdirを実行するのをやめて、os.mkdirsを使用することにしました。

os.mkdirs({hogedir}, exist_ok = True)

上記の通り、exist_okをTrueにしてあげれば、mkdir -pと同じことができそうです。

単体試験どうしよう

os.mkdir()でディレクトリを作成するときの異常系をどうやってテストしようかと思っていましたが、対象とするディレクトリと同じ名前ファイル(拡張子なし)を作成することでエラーを吐かせることができました。