【pythonで自動化!】前編:設定ファイル編


始めに

こんにちは、美味しいしです。
この記事は、「私、デスクトップが汚い人とはお付き合いしたくないの」と言われないためにの実装解説記事の1つ目となります。
実装について知りたい方は記事をご覧ください!

設定ファイルの作成編集部分

今回は設定ファイルにyamlとcsvを使いました。

困った点1:設定ファイル何処におこう

設定をユーザーが変更しやすくなるように、外に出そうと言うところまではよかったのだが、いざcli化しようと思うと置き場所に困った。
結局、home dir下に.myscreenshot と言うフォルダを作ることで解決した。
やや力技かも。

困った点2:path中に含まれる"~"がhomedirをさしてくれない

設定ファイルを書いてみて、嬉々として動かしてみたら動かない。
なんでかなぁと思ったら、pathの中に含まれる"~"がただのニョロとしてしか解釈されていなかった。

dirname="~/.myscreenshot"

解決方法は以下のとおり

from os.path import expanduser
home=expanduser("~")
dirname=dirname.replace("~",home)

工夫した点1:勝手にmacの設定とってこれたらかっこいいんじゃね???

subprocessを使ってコマンドを叩くことで実装しました。

import subprocess
res = subprocess.run(
        "defaults read com.apple.screencapture location",
        shell=True,
        capture_output=True)
if res.returncode == 0:
    dirname = res.stdout[:-1].decode()
else:
    dirname = "~/Desktop"

res = subprocess.run(
    "defaults read com.apple.screencapture name",
    shell=True,
    capture_output=True)
if res.returncode == 0:
    prefix = res.stdout[:-1].decode()
else:
    prefix = "スクリーンショット"

返り値には改行も含まれているのでそれを消しています。また、byte型なので、decodeしてあげています。

これはpython-daemonというライブラリを使うと比較的容易に実装できます。

後編はこちら