Python自分用チートシート

日時のフォーマットを変更する

```python
from datetimae import datetime
t = datetime.now()
fmt = t.strftime('%Y年%m月%d日 %H時%M分%S秒') #intftimeはない
print(fmt)
```

ファイル一覧を列挙

```python
import glob
files = glob.glob("*.xlsx")
print(files)
```

range関数の注意

```python
最小値,最大値+1 を設定する
```

tryとexcept

```python
try: #インデントの内容でエラーが出なければインデント中の最後まで行く
    print(1/ 0)
except ZeroDivisionError as e:
    print(e)
    print(type(e))
```

```python
try:
    例外が発生する可能性のある処理
except 捕捉したい例外クラス:
    捕捉したい例外が発生した時に実行される処理
else:
    例外が発生しなかった時のみ実行される処理
finally:
    例外の発生有無にかかわらず実行したい処理
```

tryの下にやりたい内容を書く、エラーが出るとexceptに行く

URL存在確認
[https://qiita.com/seigot/items/534ca3089d217200a1d6](https://qiita.com/seigot/items/534ca3089d217200a1d6)

```python
import urllib.request, urllib.error

def checkURL(url):
    try:#インデント内容についてエラーが出なければ最後まで、出たらexcept部分を実行
        f = urllib.request.urlopen(url)#ここでURLオープンのエラーを確認
        print ("OK:" + url )
        f.close()
    except:
        print ("NotFound:" + url)

if __name__ == '__main__': # if〜はインポートしたとき勝手に実行しないようにするもの
    url = "http://qiita.com/"
    checkURL(url)
```

continue

```python
# coding: utf-8

# xが3の時continueする
for x in range(5):
    if x == 3:
        continue
    print(x)
```

実行結果

```python
0

1

2

4
```

break

```python
# coding: utf-8

# xが3の時breakする
for x in range(5):
    if x == 3:
        break
    print(x)
```

実行結果

```python
0

1

2
```

else

```python
# coding: utf-8

# for文で、breakしない
for x in range(3):
    print(x)
else:
    print('else')

# for文で、breakする
for x in range(3):
    if x == 2:
        break
    print(x)
else:
    print('else')
```

実行結果

```python
0

1

2

else

0

1
```

guiでボタンを横に　[https://pg-chain.com/python-pack-grid-place](https://pg-chain.com/python-pack-grid-place)

```python
import tkinter

# 画面作成 
root = tkinter.Tk() 
root.geometry('300x200')

# ボタン作成
btn = tkinter.Button(root, text='開始', width=14)
# 配置
btn.pack(fill = 'x', padx=20, side = 'left')
# ボタン作成
btn = tkinter.Button(root, text='終了', width=14)
# 配置
btn.pack(fill = 'x', padx=20, side = 'left')

root.mainloop()
```

Tkinterでウインドウを消す

```python
tk.TK().withdraw()
#root.withdraw()はルートウィンドウを非表示にする関数
#ダイアログのみを表示するときに使う
```

openpyxl関連

```python
#横はロウ　縦はカラム

#新規ブック作成
book = openpyxl.workbook()

#アクティブなシートを得る
sheet = book.acive #ブックのアクティブなやつ、という意味

#n番目のシートを得る
sheet = book.worksheets[n]

#シート名を指定して取得
sheet = book["シート名"]

#セルの値を得る
cell = sheet["A1"]

#セルに値を書く
sheet["A1"] = "test" 

#行と列を指定して値を設定
sheet.cell(row=1,column=1,value="こんにちは")
尚、値には＝SUM()などもいれることが出来る

#先に任意のセルを取得、その後値を設定
cell = sheet.cell(row=1,column=1)
cell.value="こんにちは"

#連続でセルに値を設定
 for i in range(10):
	sheet.cell(row=(i+1),column=1,value=i)

#範囲内のセルを得る1
for y in range (2,5):
	r = [] #リストを宣言
		for x in range(2,5):
			v = sheet.cell(row=y,column=x).value
			r.append(v)

#範囲内のセルを得る2
for row in sheet["B2":"D4"]:
	r = []
	for cell in row:
		r.append(cell.value)

#範囲内のセルを得る3-イテレータを利用して、繰り返し範囲を取得して実行
it = sheet.iter_rows(
	min_row=最小行,max_row=最大行,
	min_col=最小列,max_col=最大列)
for row in it:
	for cell in row:
		r.append(cell.value)

#セル番号取得
cell.coordinate

#セル名から行番号と列番号を得る
cell = sheet["セル名"]
print(cell,row,cell.column)

#行番号と列番号からセル名を取得する
cell = sheet.cell(row=x,column=y)
print(cell.coordinate)

#計算済みの値がほしいときのブックロード方法 dataonly=True
book = excel.load_workbook(
	"filename.xlsx",data_only=True0

#データが何行あるか不明な場合
rows =sheet["A3","F999"]
for row in rows:
	values = [cell.value for cell in row]
	if values[0] is None : break

#データのセーブ
book.save("filename.xlsx")
```