前提・実現したいこと
pythonでCLIアプリケーションを作っています。
私のPC環境はWINDOWSとMACの両方があるのですが、作ったアプリケーションはその両方の環境で動かすことを前提にしています。
CLIアプリケーションでは、inputを用いて文字列の受け取りを行うのですが、MAC環境では
python
1import readline
をしておかないと、矢印キーを押下した場合にカーソルが動かず[[Aなどの文字列が入力されてしまいます。しかし、WINDOWS環境では該当の処理は不要です。
つまり、稼働する環境によってimportをするかどうか判断しないといけません。
そこで、
python
1# main.py 2 3import platform 4if platform.system() == "Darwin": 5 import readline
としているのですが、少々コードとしては不格好です。
また、mac環境ではimportするだけで矢印キーが動作しますので、特にreadlineを明示的に使うことは無いのですが、flakeが「'readline' imported but unused」という警告を出しますので、特に必要性がないのですが、readline.clear_history()などのコードも挿入しないといけないのがスマートではありません。
そもそも、mac環境にて該当処理が必要な理由、また、importをしたら解消する具体的な理由を理解できていないので、やりたいこと(mac環境でもinputで矢印キーによるカーソル動作)を実現する最適な方法ではない可能性もあります。
やりたいことに対して、最適な処理の方法を教えていただけないでしょうか。
または、flakeの警告をignoreすることなく回避する方法はありますでしょうか。
2020/09/15 22:36 UPDATE
とりあえず該当処理をdarwin.pyとして別のpythonファイルに移し、
python
1# darwin.py 2 3import platform 4 5def enable_readline(): 6 if platform.system() == "Darwin": 7 import readline 8 9 readline.clear_history() 10 return True
python
1# main.py 2 3import darwin 4 5darwin.enable_readline()
として、目立たなくする感じで運用をしています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/15 14:12