バックエンド学習日記
venvの仮想環境の入り方
myvenv/Scripts/activate
というコマンドを打ってもzsh: no such file or directory: myvenv/Scripts/activateと返却される。
どうやらmacではsource myvenv/bin/activate
と入力する必要があるらしい。
Dictionaries (dict)
-
Declaration
Standard Declarationd = {'key1':’value1', 'key2': 'value2'}
Using the
dict()
Function ①d = dict(key1="value1", key2="value2")
Using the
dict()
Function ②d = dict([('key1':’value1'), ('key1':’value1')])
-
Retrieving Values
Using [key]d['key']
Using the
get()
Methodd.get('key')
-
Updating Dictionaries
Using theupdate()
Methodd1 = {'a':10, 'b':20} d2 = {'a':1000, 'c': 30} d1.update(d2) print(d1) # {'a': 1000, 'b': 20, 'c': 30}
-
del statement
d = {'a':10, 'b':20} del d['a'] print(d) # {'b':20}
-
clear() method
d = {'a':10, 'b':20} d.clear() print(d) # {}
-
How to check if a key exists
d = {"a": 10, "b": 20} print("a" in d) # True print("c" in d) # False
zshのプロンプト表示形式を変更する。
目的
zshの表示形式をuser_name@computer_name current_dir %
みたいな表示がとても鬱陶しいので、カレントディレクトリだけを表示したい。
.zshrcに環境変数 PS1を設定
カレントディレクトリまでのパスを表示する場合
export PS1="%~ $ "
カレントディレクトリ名だけを表示する場合
export PS1="%. $ "
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()でディレクトリを作成するときの異常系をどうやってテストしようかと思っていましたが、対象とするディレクトリと同じ名前ファイル(拡張子なし)を作成することでエラーを吐かせることができました。