質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

959閲覧

pythonでmac環境のみimport readlineしたい

mlver007

総合スコア1

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

2クリップ

投稿2020/09/15 13:26

編集2020/09/15 14:28

前提・実現したいこと

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()

として、目立たなくする感じで運用をしています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

やりたいことに対して、最適な処理の方法

記載の方法が現状最適です。

flakeの警告をignoreすることなく回避する方法

import readline の右に # noqaを入れます。

import readline # noqa

投稿2020/09/15 13:56

編集2020/09/15 14:43
sfdust

総合スコア1135

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

0

Flake8の警告回避に関しては、以下のassertを使用する方式が私は個人的に好きです。

python

1 2import readline 3assert readline 4

投稿2020/09/15 14:14

YouheiSakurai

総合スコア6142

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mlver007

2020/09/15 14:32

なるほど、assert で回避することもできますね。 ただ、black が import の下に空行を開けてしまいますので、意味のない行のわりに少々不格好です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問