2

Python(2. *フレーバー)を広範囲に使用するプロジェクトがありますが、ターミナルメニューライブラリまたはその効果のための何かがあるかどうか疑問に思っていますか?矢印キーの強調表示可能なオプションや色などを使用していくつかのオプションを単純化することで、スクリプトにフレーバーと生命を吹き込むことを目指しています。bashシェルターミナルメニューを作成する方法があることを漠然と思い出しますが、私はそうではありません。ユーザー入力をbashからpythonスクリプトに渡す方法は確かですが、おそらくbashターミナルメニューでsysarggsを使用してスクリプト呼び出しをプッシュする必要がありますか?できればPython側で何か欲しいのですが。助言がありますか?

また、ランダムな質問ですが、ターミナルの美学のトピックに取り組んでいるので、ここに当てはまります。カウンターを処理するための最良の方法は何ですか?私のスクリプトは画像ファイルを探し、それが見つかると、サブプロセス呼び出しでターミナルをクリアしてクリアし、次に見つかった画像の合計を印刷しますIE 10画像、1つを見つけてクリアし、「11画像が見つかりました」を印刷します。スクリプトが機能する場合があります本当に速く、これはパフォーマンスを損なうと感じます。考え?

どうもありがとうございました、私はスタックオーバーフローが大好きです;)

編集-すべての迅速な対応に感謝します!熟考するためのオプションがたくさんあります。あなたの回答はすべて役に立ったので、私は皆に賛成票を投じました。家に帰ったらすべての図書館をチェックして、何が一番いいかによって答えを選んでみます。あなたの答えはすべて関連しているので、全部選んでいただければと思います。非常に感謝している人々。仕事から家に帰ってコーディングをする機会があったら、報告します;)

編集2-カウンター/進行状況の表示の説明。スクリプトが非常に短い時間で数千の画像を検出したときにパフォーマンスを低下させないようにする方法を探しています。これは実際に切り刻まれたPythonです...

for each item in list:
    if item ends with .jpg
        cnt=cnt+1
        do stuff with image file
        subprocess.call('clear')
        print str(cnt)+" total images processed."

再度、感謝します!

4

3 に答える 3

5

Clint (* C *ommand * L *ine * IN *terface * T *ools)をチェックしてください!

色の例:

from clint.textui import colored

print 'I love ' + colored.yellow('pyt') + colored.blue('hon')

インデントも:

from clint.textui import colored, indent, puts

with indent(3, quote=colored.red(' >')):
    puts ('some random text')
    puts ('another text')
    with indent(3, quote=colored.green(' |')):
        puts('some more nested identation')
        puts('cool isn\'t?')

PS 同じ作者が、「requests」と呼ばれる同様に優れた HTTP リクエスト ライブラリを作成しました: https://github.com/kennethreitz/requests

于 2012-12-03T16:37:00.967 に答える
4

多くの制御が必要で *nix を使用している場合は、stdlib curses モジュールを使用できます。

ほんの少しの色が必要な場合 (/スクリプトを大幅に変更したくない場合) は、 ANSI エスケープ コードcursesを使用できます。例えば:

print '\033[1;32mgreen\033[1;m'

「緑」という単語が印刷されます...緑。

これは、キャリッジリターンを使用して思いついたローディングバーです(このフォーラムの回答に基づいています):

from time import sleep 
import sys 

num = 100

print 'Loading: [%s] %d%%' % (' '*(num/2), 0),

try:
    colorCode = 43
    for x in xrange(num+1):
        if x == num: colorCode = 42
        print '\rLoading: [\033[1;%dm%s\033[1;m%s] %d%%' % (colorCode, "|"*(x/2), " "*(num/2-x/2), x), 
        sys.stdout.flush()
        sleep(0.02) # do actual stuff here instead 
except KeyboardInterrupt:
        print '\rLoading: [\033[1;41m%s\033[1;m%s] %d%%  ' % ("|"*(x/2), " "*(num/2-x/2), x)

出力例:

Loading: [|||||||||||||||||||||||||||||||||||||||||         ] 82%

(SO には表示されませんが、ロードは黄色、中止は赤、完了は緑です。)

于 2012-12-03T15:53:42.893 に答える
2

メニューなどを提供するUrwidというライブラリがあります。私はそれを深刻な目的で使用したことはありませんが、私の予備的な経験ではかなりうまく機能します. ただし、Un*x システムでのみ動作します。(プロジェクト ページには、Cygwin で動作すると書かれていますが、試したことはありません。)

于 2012-12-03T16:06:13.213 に答える