ぺーぱーふぇいすスマートフォン用の表示で見るぺーぱーふぇいす雑記と備忘録。Python特定のWi-Fiに接続している場合に行いたい処理とかあるかもしれない。操作しているMacbookが自宅のWi-Fiに接続されている状態であるならば、自宅のNASの音楽ライブラリと自動的に同期させたい......とか。そんな時にPythonでSSIDを調べる個人的チップ。余談サンプルまず前提。MacとPythonのver。3.7.0上記の通り、動作させるのがMacだとわかっているのであればこんな感じ。#SSIDが出力されるサンプル解説MacではWi-Fiの状態を確認、制御するコマンドが用意されている。絶対パスで/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport。オプションに-Iをつけることで現在接続中のWi-Fiの状態を調べることができる。出力結果はこんな感じ。xxxPythonからシェルコマンドを実行して、この標準出力結果を取得。XXXに該当する箇所を正規表現とかを使って引き抜いている。subprocess.run()で取得している標準出力結果はbyte配列で変換されるので、Macのターミナルでデフォルトの文字コードとしてUTF-8でデコードしてから正規表現等で結果を引き抜いている。結果的にOSのコマンドを利用する泥臭い感じになった。「よっしゃ、OSのCLI動かして標準出力結果抜いたろ!」ってPythonでやる場合、ネックなのはクロスプラットフォームで動かす時なんかだろうか。今回はSSIDを抜き取るためにmacOSのairportというコマンドを使ったが、当然これがWindowsやLinuxなら同様な機能を持つ別コマンドにしなければならない。Pythonのosとかplatformあたりのモジュールを使って、実行環境のOSを調べて実行するコマンドを変えることもそうだが、個人的に厄介だと思うのはsubprocessに実装されている標準出力を得る方法で返却されるのがバイト配列だという点だろうか。OSでは特にターミナルの設定をいじっていなければUTF-8で(たぶん)デコードできるだろうが、Windowsのcmd.exeはOSに設定してあるロケールで文字コードが変化するし、LinuxもSSHで接続した時に文字化けとかする場合を考えると設定によりけりなんじゃないかな?。最近はメインで使っているのがMacbookだからそんなに気はのらないけど、せっかくVMがガンガン動かせるようになってきたので暇ならクロスプラットフォームなPythonスクリプトの構築に向けていろいろ調べておこうかな。Python】接続しているWi-FiのSSIDを取得する広告を非表示にする関連記事2019-05-12スクラップ_2019-05-12主にMicrosoftとかGoogleの発表についてが多いかも。【技術/テ...2019-02-19スクラップ_2019/02/19いつもの雑記。期になったガジェットとか、IT系のニュースとか...2019-02-14スクラップ_2019/02/14いつもどおりのスクラップ記事。API】colorIdを調べる方法Googleカレンダーでは予定とかに色を指定できる。»プロフィールid:PaperFace雑記と備忘録。キズナアイハロー・ワールドはてなブログをはじめよう!PaperFaceさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。