メモ的な何か

NWエンジニアって名乗りずらい人

江古田でモロッコ料理でタジン鍋を食べてきた アランダルース (ALANDALUS)



人生初モロッコ料理を食べてきました。



階段から異国感があふれる。



・ランチメニューはパエリアとタジン鍋

パエリアは1700円
タジン鍋は1800円か。

ミートボールのタジン+モロッコティーをチョイス
2000円か。
高いな....

15分ぐらい待ったかな。
あ、水は無料なのね。モロッコティー頼まなくてよかったかな。


実食!!!

うーーん
美味しいけど..想像は越えなかったな。
ズッキーニとかヒヨコ豆をスパイスとトマト缶で煮込んだ感じ。
なんかインドカレー一歩手前って味。
リピートは無いかな。

食べ終わったタイミングでモロッコティーがきた。


ミント+お茶+砂糖かな。
なんか歯磨いてるみたい。
面白いお茶だった。

6日間で-4kg アマチュアキックボクシングのゆるい減量方法

マチュアキックボクシングの場合、検量後1,2時間ぐらいで試合ってパターンが多いかと思います。
そうなってくると通常の格闘家の減量方法だと当日リカバリーが間に合いません。
前日計量の格闘家の減量方法より当日計量のパワーリフティングの減量方法がかなり参考になるはず。
海外のいろんなパワーリフターの減量を参考にやってみました。
真似して健康に被害があっても責任とれませんので、自己責任でお願いします。
かなりゆるい減量となっております。アイスめっちゃ食べたし。


とあるアマチュアキックボクシングの試合に65kgで出場した時の減量記録となります。

試合6日前

朝起きてトイレ済ました後に体重計乗ってみる

68.6kg

試合は65kgなので3.6kgオーバー。

ウォーターローディング開始。
目標は8L。
また塩分は5g以内の摂取としました。
糖質は100gまででしたら、アイスとかチョコとか食べてOKにしました。
寝る前に体重を図ったら68.1kgとなっていました。
水はこの日は9L飲んでいました。

試合5日前

寝起きでトイレいって
66.6kg
予想以上に落ちていたので、糖質は気にせずとることにしました。
塩分は5g以内で引き続き水は8l目標で飲みます。
水飲むのが辛くなったらカラオケで歌って飲むを繰り返していました。

試合4日前

朝起きてトイレ済まして
66.8kg
ウォーターローディング+塩抜きだけで
今回落ちそう。
水8Lと塩5g以下を引き続き続ける。

試合3日前

朝起きてトイレいって
66.3kg
ここから塩分摂取量を3gにしてみる。
夕飯は流動食(アイス)へ変更。
水は変わらず8L飲みます。

試合2日前

ここらへんから体調的にフラフラしてくる。
起きて体重は
66kg
あと1kgだけなんで結構余裕。
水分は飲みたいときに飲むスタイルへ変更。
塩分1gと夕飯は流動食(アイス)で過ごす。
昼飯はパックのご飯に牛肉+マヨネーズ(マヨネーズは塩分が少ないからかけ放題)

試合1日前

朝起きて
65.2kg
塩抜きの効果がすごい出てる。

特に無理せず過ごす。
水は2L飲みました。
てかウォーターローディングしすぎて飲みたいと思わない。

夕飯は変わらず流動食(アイス)で過ごす。
塩分は1g以下にしました。たぶん0.5gぐらい。

計量日

朝起きて
64.4kg

-600gで朝を迎えることができました。
サウナや風呂で水抜きをせずに
68.6kg-64.4kg=4.2kg落とすことができました。


感想

普段サウナで2kg落とす減量をしていましたが
塩抜きだけ減量のほうが遥かに精神的に楽でした。
サウナで水抜きすると計量前までが喉渇きすぎてマジで辛いですが
今回は喉渇く感じはありませんでしたし、塩分とらなければ
アイス食べ放題でしたので楽でした。
次回は糖質もカットしてどこまで落とせるかやってみたいと思います。

Pythonで対象フォルダ内のファイル名を取得する

よく仕事でフォルダ内にあるファイル名を一個づつコピーして
メールで送るっていう謎作業がありまして
これPythonで全部取得できないかな?と思いやってみました。

対象のフォルダ内のファイル一覧取得の方法となります。
ついでに一覧をメモ帳に書き込んで保存までします。

全体コード

import glob2
import os

#ファイル名が欲しいフォルダを入力
files=input('フォルダパス:')

#glob関数でファイル名一覧取得
files_names=files+'/*'

files_names_l =glob2.glob(files_names)

#ファイル名だけに変形する

file_l=[]

for file in files_names_l:
	file_l.append(os.path.basename(file))

#改行して見やすくする
file_l_n="\n".join(file_l)

#ついでにテキストファイルに作成

export_text = files+"/test.txt"
with open(export_text, mode='w') as f:
	f.write(file_l_n)

解説

使用モジュール

モジュールはこの二つだけです。
osはデフォルトで入ってたはずですので、
pip install glob2 でインストールして使いましょう。

input関数でファイル名のフォルダを指定

#ファイル名が欲しいフォルダを入力
files=input('フォルダパス:')

表示としてはこんな感じ

フォルダパス:C:\pyworks←私が入力したパスになります。

取得するファイル名を指定

input関数で指定したパス内のファイル名を取得していきます。

#取得するファイル名を指定
files_names=files+'/*'

'/*'の部分の*でパス内のすべてファイル名を取得してきます。
ここを↓のように記述すると

#指定したパス内のテキストファイル名だけ取得
files_names=files+'/<strong>*.txt</strong>'
#指定したパス内のpdfファイル名だけ取得
files_names=files+'/<strong>*.pdf'</strong>

正規表現ってやつらしいです。

glob関数でファイル名一覧取得

ここでglob関数使っていきます。
ちなみにglob2とglobっていうモジュールありますが
何が変わったのか謎です。
超サイヤ人2のほうが超サイヤ人より強いから理論でglob2使ってます。

files_names_l =glob2.glob(files_names)

ここで取得した一覧だとこんなリストになってます。
["C:\Downloads\test.py","C:\Downloads\test1.py","C:\Downloads\test2.py"]

いや~見にくいんで、次でこれを分けていきます。

os.path.basenameでパスとファイル名部分をわける

file_l=[]

for file in files_names_l:
	file_l.append(os.path.basename(file))

os.path.basenameを使うことでパスとファイル名を分けることができます。

join関数で改行する

#改行して見やすくする
file_l_n="\n".join(file_l)

この時点で試しにprintしてみると下のようになるはずです。

test.py
test1.py
test2.py

せっかく出力したんでテキストファイルにしていきましょう。

export_text = files+"/test.txt"
with open(export_text, mode='w') as f:
	f.write(file_l_n)

保存先は最初に指定したパスにしています。
以上となります。
ありがとうございました。

お米ともち麦のカロリー計算

ご飯おかわり無料。松のや、吉野家やよい軒等。
最高ですよね~
カロリー計算作りました。

白米のカロリー計算


g

お米のカロリーは:

もち麦のカロリー計算


g

お米のカロリーは:

【Python】Office 365 の URL と IP アドレスの範囲からIPv4アドレスだけ抽出する

M365ではIPアドレスの範囲が毎月変更があって(IPv4アドレスは半年に一回ぐらい更新ある気がする)
変更があるたびにNW機器でルーティングの追加や削除が必要となります。


learn.microsoft.com

職場でIPv4のアドレスだけ抽出してほしいってなったのでPythonスクレイピングで作ってみました。

全体コード

import datetime
import re
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome import service as fs

CHROMEDRIVER = "C:\chormeドライバーおいてる場所指定"
 
# ドライバー
chrome_service = fs.Service(executable_path=CHROMEDRIVER)
browser = webdriver.Chrome(service=chrome_service)

#o365のページ
browser.get('https://docs.microsoft.com/ja-jp/microsoft-365/enterprise/urls-and-ip-address-ranges?view=o365-worldwide')
  

#IPアドレスの所だけ抽出

elems = browser.find_elements(By.TAG_NAME,'code')

#.textでテキストデータを抽出

values = []

for elem in elems:
    values.append(elem.text)


#抽出結果を','で連結

values_join=','.join(values)

#joinで連結した後にsplit(",")で分割
values_split=values_join.split(",")

#IPv4とそれ以外に抽出したデータをわける

values_alpha=[]
values_ipv4=[]

for i in values_split:
	alpha=re.findall('[a-z]+',i)
	if alpha:
		values_alpha.append(i)

	elif ':' not in i:
		
		values_ipv4.append(i)

values_new=[]

for i in values_ipv4:
	if ' ' in i:
		space=i.replace(' ','')
		values_new.append(space)
	else:
		values_new.append(i)		

set_values=set(values_new)

#ファイル名用に日付取得

heute=str(datetime.date.today())

filename='C:\保存先'+heute+'.txt'


#txt書き出し

with open(filename, 'wt') as f:
	for ele in set_values:
		f.write(ele+'\n')

	

解説

使用するモジュール

import datetime
import re
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome import service as fs

seleniumを使ってwebスクレイピングするのでググったら↑があれば大丈夫そう。
あと正規表現と日付を使うのでreとdatetimeをimportしています。

choromedriverを指定、URLを指定する

CHROMEDRIVER = "C:\chormeドライバーおいてる場所指定"
 
# ドライバー
chrome_service = fs.Service(executable_path=CHROMEDRIVER)
browser = webdriver.Chrome(service=chrome_service)

#o365のページ
browser.get('https://docs.microsoft.com/ja-jp/microsoft-365/enterprise/urls-and-ip-address-ranges?view=o365-worldwide')

"C:\chormeドライバーおいてる場所指定" だけchromedriverを保存したパスを指定してください。

o365のホームページからアドレス情報だけ抽出する

#IPアドレスの所だけ抽出

elems = browser.find_elements(By.TAG_NAME,'code')

#.textでテキストデータを抽出

values = []

for elem in elems:
    values.append(elem.text)

valuesにアドレス情報を抽出しました。
このままだと.comとかIPv6IPv4が混じった状態なので次でデータを整えます。

一つのリスト内に複数IPアドレスが入ってるのでいったん一つにする

#抽出結果を','で連結

values_join=','.join(values)

#joinで連結した後にsplit(",")で分割
values_split=values_join.split(",")

これでリスト一つに1アドレスになりました。

IPv4とそれ以外に抽出データをわける

#IPv4とそれ以外に抽出したデータをわける

values_alpha=[]
values_ipv4=[]

for i in values_split:
	alpha=re.findall('[a-z]+',i)
	if alpha:
		values_alpha.append(i)

	elif ':' not in i:
		
		values_ipv4.append(i)

アルファベットが入ってるやつはvalues_alphaに格納して
残りでv6表記の【:】が入ってないやつ(すなわちIPv4アドレス)だけをvalues.ipv4へ格納

謎のスペースが入ってるので消す

values_new=[]

for i in values_ipv4:
	if ' ' in i:
		space=i.replace(' ','')
		values_new.append(space)
	else:
		values_new.append(i)		

set_values=set(values_new)

なんかprintで見てみたらスペースが入ってたり入ってなかったりなんで
replaceで削除。あと重複してるアドレスもあったのでset()で削除しています。

テキストファイルに保存する

#ファイル名用に日付取得

heute=str(datetime.date.today())

filename='C:\保存先'+heute+'.txt'


#txt書き出し

with open(filename, 'wt') as f:
	for ele in set_values:
		f.write(ele+'\n')

ファイル名をdatetimeで取得した日にしています。

filename='C:\保存先'+heute+'.txt'

あとはwith構文でテキストファイルで出力で完了!!

pythonで複数のテキストファイルから欲しい部分だけ抽出する方法

Pythonで複数テキストファイル内の任意の文字列を含む行を抽出する方法のメモ

もっと効率のいい書き方が100%存在します、絶対
今の実力がこれってことです。

全体コード

import glob


#取得したいテキストファイルのパスを指定
files='C:/テキストファイルが置いてある場所のパス'


#テキストファイルのパス一覧取得
file_name_edit=files+'/*.txt'
files =glob.glob(file_name_edit)

#テキストファイルが何個あるか確認(あとでfor文回すときに使う)
len_flies=len(files)


#抽出する関数作る
def file_edit(path):
	path_new='C:/新しく作るテキストファイルの名前'

	with open(path,"r") as f:
		lines = f.readlines()
		lines_strip = [line.strip() for line in lines]


      #抽出する文字の行数を調べる
		list_rownum = [i for i,lines_s in enumerate(lines_strip) if '抽出する部分' in lines_s]
		int_list_rownum=''

     #手に入れた行を読み取れるように変換
		for i in list_rownum:
			int_list_rownum=i


   #抽出する場所を行指定で読み込む
	with open(path) as f:
		lines01 = f.readlines()[int_list_rownum]

   #新しいテキストファイルに書き込む
	for i in lines01:
		with open(path_new, mode='a') as f:			
			f.write(i)

#for文で↑作った関数を回す
for i in range(0,len_flies):
	file_edit(files[i])

解説

それでは解説していきます。

まずglob.glob()で対象パスにあるテキストファイルを取得する

import glob

globをインポート

#取得したいテキストファイルのパスを指定
files='C:/テキストファイルが置いてある場所のパス'

#テキストファイルのパス一覧取得
file_name_edit=files+'/*.txt'
files =glob.glob(file_name_edit)

#テキストファイルが何個あるか確認(あとでfor文回すときに使う)
len_flies=len(files)

正規表現ってやつ→*.txtとすることで対象のパスにあるすべてのテキストファイル一覧を取得できる。

関数作成

#抽出する関数作る
def file_edit(path):
	path_new='C:/新しく作るテキストファイルの名前'

	with open(path,"r") as f:
		lines = f.readlines()
		lines_strip = [line.strip() for line in lines]


      #抽出する文字の行数を調べる
		list_rownum = [i for i,lines_s in enumerate(lines_strip) if '抽出する部分' in lines_s]
		int_list_rownum=''

     #手に入れた行を読み取れるように変換
		for i in list_rownum:
			int_list_rownum=i


   #抽出する場所を行指定で読み込む
	with open(path) as f:
		lines01 = f.readlines()[int_list_rownum]

   #新しいテキストファイルに書き込む
	for i in lines01:
		with open(path_new, mode='a') as f:			
			f.write(i)

ここを実際に作成するファイル名にしてください。

def file_edit(path):
	path_new='C:/新しく作るテキストファイルの名前'
		list_rownum = [i for i,lines_s in enumerate(lines_strip) if '抽出する部分' in lines_s]

最後は自作関数を回しておしまい

   #新しいテキストファイルに書き込む
	for i in lines01:
		with open(path_new, mode='a') as f:			
			f.write(i)

こんな感じです。