Skip to content

Blog

Python で営業日を取得出来るライブラリ「jpbizday」を公開

日本の祝日情報を取得する Python ライブラリは幾つかありますが、動作は以下に大別出来ると思います。

  1. オンラインで動作するもの (「Google カレンダー」や「公共機関が出しているカレンダー」からネットワーク経由で情報取得するもの)
  2. オフラインで動作するもの

どちらも一長一短ですが、「1. オンライン」の場合は当然、オンライン側の URL や提供データのフォーマット変更などの影響を受けてしまいます。 「2. オフライン」タイプのライブラリとしては jpholiday という、素晴らしいライブラリが公開されています。 こちらのライブラリを利用する形で (祝日では無く) 営業日情報を取得する jpbizday というライブラリを作成しました。

WSL でマウントしたファイルシステムでもパーミッションを扱えるようにする

WSL は一般的には「VolFs」と「DrvFs」の、ふたつのファイルシステムを併せて運用することになると思います。

  1. VolFs (WSL 内部を管理する。 WSL 上にインストールされたディストリビューションを管理するファイルシステム)
  2. DrvFs (WSL 外部を管理する。 WSL 上からマウントされた外部 (NTFS など) を管理するファイルシステム)

ですが、デフォルトの状態では DrvFs でパーミッションを細やかに管理することが出来ません。 WSL のファイルアクセス許可には下記のように書かれています。

ファイルにメタデータが関連付けられていない場合は、Windows ユーザーの有効なアクセス許可を読み取り/書き込み/実行ビットに変換し、ユーザー、グループ、およびその他の同じ値として設定します。 たとえば、Windows ユーザーアカウントに読み取りと実行のアクセス権があり、ファイルへの書き込みアクセスが許可されていない場合は、ユーザー、グループ、およびその他の r-x として表示されます。 ファイルに Windows で ' 読み取り専用 ' 属性が設定されている場合、Linux では書き込みアクセス権は付与されません。

ですが、DrvFs をマウントする際に metadata オプションを指定することで、パーミッション情報をメタデータに保存することが出来るようになります。

isort で Python の import 順序を PEP8 準拠に修正する

Python で import するライブラリの順序は PEP8 で決められています

import文 は次の順番でグループ化すべきです:

  1. 標準ライブラリ
  2. サードパーティに関連するもの
  3. ローカルな アプリケーション/ライブラリ に特有のもの

isort を使うと Python で import するライブラリの順序を並び替えてくれます。

ディレクトリ配下のパーミッション/オーナーを一括変更する

現在のディレクトリ配下のパーミッションを再帰的に変更するには、例えば下記のように実行します。

1
2
3
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
find . -name "*.sh" -exec chmod 755 {} \;

オーナーも変更したい場合は以下のように実行します。

1
chown -R root:root .

Windows で fileutil を使って指定サイズのダミーファイルを作成する

Windows 10対応:巨大サイズのファイルを簡単に作る(fsutilコマンド編)に書かれている通り、Windows では fsutil file createnew [FILENAME] [SIZE] を使うことで指定サイズでダミーファイルを作成することが出来ます。 区切りの良いサイズごとのコマンドサンプルをメモしておきます。

No. ファイルサイズ コマンド
1 1K fsutil file createnew 1K 1024
2 10K fsutil file createnew 10K 10240
3 100K fsutil file createnew 100K 102400
4 1M fsutil file createnew 1M 1048576
5 10M fsutil file createnew 10M 10485760
6 100M fsutil file createnew 100M 104857600
7 1G fsutil file createnew 1G 1073741824
8 10G fsutil file createnew 10G 10737418240
9 100G fsutil file createnew 100G 107374182400