BBlog

備忘Log(備忘録です)

【Python】指定フォルダ内のファイルの一括連番リネームする

概要

Pythonの勉強を始めたため備忘録として記事を作成
「指定フォルダ内のファイルの一括連番リネーム」するものを作成したため過程で学んだことなどを記載

成果物

github.com

使い方(GitHubにも記載済み)

YAMLファイルにパラメータを記述し実行する方法
「parameters.yml」内にある上記のパラメータを変更

「FileRenameSerialNumberByYAMLParams.bat」を実行

コマンドプロンプトからパラメータを指定して実行する方法
「FileRenameSerialNumber.bat」を実行すると各パラメータの入力を求められるので入力する。

いろいろ覚えたことの備忘録

実行ファイルのパスを取得
print(__file__)

# 結果
h:\HOGE\HOGE\HOGEHOGE\test.py
実行ファイルのディレクトリのパスを取得
print(os.path.dirname(__file__))

# 結果
h:\HOGE\HOGE\HOGEHOGE
文字列のフォーマット
a = 10
b = 99

str1 = "number={} and {}".format(a, b)
str2 = f"number={a} and {b}"

# 結果
number=10 and 99
文字列にパターンとマッチする部分があるかを調べる
# ファイル名で使用できない文字が含まれていないか調べる
fileName = "aa?aaa"
if re.search(r'[\\|/|:|?|.|"|<|>|\|]', fileName):
    print("NG")

# 結果
NG
フォルダ内のファイルから「ファイル」のみを取得(フォルダを除く処理)の内包表記
files = os.listdir(dirPath) # フォルダ内の全ファイル取得
files = [f for f in files if os.path.isfile(os.path.join(dirPath, f))] # フォルダ内の全ファイル取得
取得したファイルの「作成日」順でソート(昇順)
# ファイル名で使用できない文字が含まれていないか調べる
files = os.listdir(dirPath) # フォルダ内の全ファイル取得
files = [f for f in files if os.path.isfile(os.path.join(dirPath, f))] # フォルダ内の全ファイル取得

# ソート(reverse=Trueで降順)
files = sorted(files, key=lambda f: os.stat(os.path.join(dirPath, f)).st_ctime, reverse=False)
取得したファイルの「ファイル名」(文字列)順でソート(昇順)
files = os.listdir(dirPath) # フォルダ内の全ファイル取得
files = [f for f in files if os.path.isfile(os.path.join(dirPath, f))] # フォルダ内の全ファイル取得

# ソート(reverse=Trueで降順)
files = sorted(files, key=lambda f: f, reverse=False)
for文でインデックスと要素を同時取得
files = os.listdir(dirPath) # フォルダ内の全ファイル取得
files = [f for f in files if os.path.isfile(os.path.join(dirPath, f))] # フォルダ内の全ファイル取得

# for文
for index, file in enumerate(files):
    print(f"{index} : {file}")
配列の最後の要素を取得
a = [1,2,3,4,5]
print(a[-1])

# 結果
5
コマンドプロンプトから呼ばれた際の引数を取得する
# 呼び出し側
python test.py a 111 ZZZ

# python側
args = sys.argv
print(args[0])
print(args[1])
print(args[2])
print(args[3])
print(len(args))

# 結果
test.py
a
111
ZZZ
4
YAMLファイルの読み込み、要素の取得
with open(INFO_YAML_FILE_PATH) as yamlFile: # YAMLファイルを開く
    yamlText = yaml.safe_load(yamlFile) # YAMLファイルのロード
    dirPath = yamlText[YAML_KEY_DIR_PATH] # Keyでアクセス

最後に

学習し始めはなんでも面白いもので止まらない。
Unityの学習を怠ってしまっている・・・。(ヤバイ)

まだ初学者ゆえ間違っていることやこうした方がいいと思うことがあったら優しくコメントください。<(_ _)>

【C#】Enumを使用したビットフラグとHasFlagの速度について

やりたいこと

HasFlagの速度を比較して調べてみる。
(いろいろなところで遅い遅い言われているので)
※100見は1触にしかず(勇次郎)
(記事で見て納得するより自分でやってみて納得するというニュアンスで書いた)

環境

Unity2020.3.11f
f:id:isshi-tech:20210618195656j:plain

ソースコード(Gist)


結果

やはりHasFlagは自作した方がよさそう

1人SlackのRSSで通知されたメッセージを「後で読むチャンネル」に保存する

基本的に情報収集は1人SlackでRSSを入れて行ってるが、サイトによってはあまり関心のない情報も通知として来てしまい流れてしまい後で読みたかったところまでさかのぼるのが面倒・・・。
また、各ジャンルの情報をピックアップして1つのチャンネルにまとめたい的なことをしたかった。

やりたいこと

RSSでいろんなチャンネルに流れてくるメッセージで後で読みたかったり読み返したいメッセージ(記事)を別のチャンネルにまとめる

1人Slackの目的

主に情報収集(これに尽きる)
Slackの無料版を使用してRSSなどのアプリを入れて情報収集をしている
下記それぞれ別のチャンネル
・娯楽系のサイト(意味が分かると怖い話など(好きだから))
・技術系のサイト(その筋では有名な方などのブログなど)
・ゲーム情報関連のサイト(4Gamer, Social Game Infoなど)
・ガジェット関連(ギズモード・ジャパンなど)
ライフハック系(ライフハッカーなど)

RSSについて

下記を参考にしてください(割愛します)
Slack に RSS フィードを追加する | Slack

記事をピックアップして「後で読むチャンネル」にコピーする

追加するAppは以下
reacji-channeler.builtbyslack.com
基本的に流れは「後で読みたいな」と思ったメッセージ(記事)に特定のリアクションをすると設定されたチャンネルにそのメッセージのコピーが通知される感じ

手順
・Reacji ChannelerをSlackに追加
・「後で読む」チャンネルを作成(※チャンネル名はお好きに)
・作成したチャンネル名に移動しメッセージ部分で下記を入力して送信(わざわざチャンネルまで行かなくてもいいかもしれない)

/reacji-channeler :eyes: #ch_my_pick_up

意味としては、「:eyes:(両目アイコンの絵文字)」のリアクションをしたメッセージを「#ch_my_pick_up(あとで読むチャンネル)」にコピーするって感じ。
これを応用すれば、あとで読むチャンネルだけでなく、大事な記事チャンネルなどいろいろな用途で使えそう。
また、専用の顔文字を追加して使用した方よさそう。(ほかの用途で安易にその顔文字を使用できないようにするため(そのメッセージがコピーされちゃう!))


これと似た用途で別の方法は下記にある(こっちの方が凝っている感じ)
個人 Slack のススメ - Qiita
情報収集と保存とSlackで共有を自動化する - hatajoeのブログ
正直自分はそこまで凝ったことは目的ではなく単純に気になった記事にリアクションして後で読むチャンネルに保存して後で読む的なことができればいいので今回のような感じにした。


他に今回のような用途でおすすめの方法などありましたら教えてくださいませ。m(__)m

UnityのビルドをJenkinsで自動化するまで Part1

UnityのビルドをJenkinsで自動化するために行ったことの備忘録
小出しでいきます。

やりたいこと

WindowsでUnity開発をしてビルド)(enkinsまわり)は別途ビルドマシンで行いたい。
・開発PCからJenkinsにアクセスしてジョブを開始させたい
・開発PC上でビルドマシンの操作をしたい

用意するもの

・開発用PC (Windows 10)
・ビルドマシン (Macmini Late 2014)

Mac(ビルドマシン)側の準備

Homebrew をインストール
下記によりインストールした

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


確認
ターミナルで下記を打ち、Your system is ready to brew.と表示されればOK

$ brew doctor


Command Line Tools (CLT) for Xcode をインストール
※上記の「brew doctor」でコマンドラインツールがどうとか警告が出たので下記でインストール

$ xcode-select --install

再度「brew doctor」を試したら「Your system is ready to brew.」が表示された。


Jenkins をインストール
ターミナルで下記でインストールした

$ brew install jenkins


下記のような感じの表示になったらOK

==> Summary
🍺  /usr/local/Cellar/jenkins/2.189: 7 files, 78MB, built in 1 minute 46 seconds

 

参考サイト

こっち見た方が早い・・・。と自分でも思ってしまう・・・
Jenkins を Mac にインストールして LAN内の PC から接続するまで - Qiita

[記事が用意されたらリンク]