使えるけどよく忘れるpythonの便利情報
2023-06-15
ファイル操作
ファイルの存在確認
返り値はTrueかFalse。
import os
os.path.exists(file_path)
ファイルの場所
import os
print(os.getcwd()) # ファイルの実行場所
print(__file__) # 実行されているファイル
ファイルを開く・閉じる
すでにファイルが開いたままや権限がないと開けない。mode
には書き込み"w"
、読み込み"r"
、追記"a"
、読み書き"r+"
の4つがある。encode
には"utf-8"
が一般的。
try:
f = open(file=file_path, mode=mode, encoding=encode)
f.close()
except PermissionError:
print("ファイルを閉じるか、権限を確認してください。")
jsonファイル
jsonファイルをf=open()
で開いた後、j=json.load(f)
で読み込むことができる。逆に辞書やリストをjsonファイルにしたい場合はjson.dump(j, f)
とする。
import json
# 読み込み
mode = "r"
f = open(file=file_path, mode=mode, encoding=encode)
j = json.load(f)
f.close()
# 書き込み
mode = "w"
f = open(file=file_path, mode=mode, encoding=encode)
j = {"key1": "value1", "key2": "value2"}
json.dump(j, f)
f.close()
文字の操作
文字列に値を代入
シングルクォーテーション「 ' 」やダブルクォーテーション「 " 」、それらを3つ連ねた「 ' ' ' 」「 " " " 」で挟んだ後、頭に「f」をつけるか、文字列のメソッド.format()
を使うことで代入が可能になる。文字列内のかぎ括弧「{ }」かメソッドの引数に値を入れると代入できる。
代入時に数値の桁数やゼロ(文字)埋めなどの制御ができる。:.3f
で実数の小数点を3桁まで表示(四捨五入)。:*>2
で「*」で指定した桁数まで埋める。0や空白も可能。「<」とすると数値の後ろに文字を埋めることが出来る。
value = 3.1416
print(f"{value}", f"""{value}""", "{}".format(value))
print(f"{value:.3f}")
value = 3
print(f"{value:*>2}")
文字コード
ord()
関数を使うと一文字に対応する番号が返る。逆に番号から対応する文字になるのはchr()
関数。
aからzまで小文字のアルファベットや大文字のアルファベットをリストにできる。「あいうえお」の50音も可能。しかし小文字 (ぁ) や (っ) などが間に入っているため専用のリストを作った。
a_z = [chr(ord('a') + i) for i in range(26)]
print(a_z)
A_Z = [chr(ord('A') + i) for i in range(26)]
print(A_Z)
a = {
'あ': range(0, 10, 2), 'か': range(0, 10, 2), 'さ': range(0, 10, 2),
'た': [0, 2, 5, 7, 9], 'な': range(0, 5),
'は': range(0, 15, 3), 'ま': range(0, 5), 'や': range(0, 5, 2),
'ら': range(0, 5), 'わ': [0, 3, 4]
}
あ_ん = [[chr(ord(key)+i) for i in value] for key, value in a.items()]
print(あ_ん)
辞書
辞書の削除
キーを削除する。キーを削除してそのキーに対応する値を取り出す.pop()
。全ての内容を消す.clear()
。
d = {'a': 1, 'b': 2, 'c': 3}
del d['b']
d.pop('a')
d.clear()
繰り返し
for文のスキップ
for i in range(10):
if i == 0:
continue
print(i)
繰り返しカウント
for count, alphabet in enumerate('abcdefg'):
print(count, alphabet)
宣言
グローバル変数
クラスや関数の外で宣言した値を変数として扱うには使いたいクラスや関数の中でglobal GLOBAL_VARIABLE
と宣言して値を操作する。
GLOBAL_VARIABLE = 0
def change_variable():
global GLOBAL_VARIABLE
if GLOBAL_VARIABLE:
GLOBAL_VARIABLE = 0
else:
GLOBAL_VARIABLE = 1
if __name__ == '__main__':
print(GLOBAL_VARIABLE)
change_variable()
print(GLOBAL_VARIABLE)
change_variable()
print(GLOBAL_VARIABLE)
アサート
明示的にエラーを出し、プログラムを無理やり脱出するような仕組み。print
文と合わせればそのとき何が起きてしまったかを表示できる。エラーが起こらなければ良いけど、起きてしまいそうだから宣言しておこうという感じ。エラーが起きても致命的ではないなら使わなくても良いかも。
for i in range(0, 10):
if i == 4:
assert print("assert", i)
print(i)
時間
表示
現在時刻の取得はdatetime.datetime.now()
とできる。これを文字列として表示するにはstr()
を使う。もし年月日や時分秒だけを表示したい場合は.strftime("%Y-%m-%d %H:%M:%S")
として使う。
import datetime
now = datetime.datetime.now()
print(str(now))
ymd = now.strftime("%Y-%m-%d")
hms = now.strftime("%H:%M:%S")
print(ymd, hms)