0

重複の可能性:
Python のコンソール出力を置き換えます

コマンドラインへの更新を含む情報を出力するプログラムを作成しようとしています。更新とは、たとえば、ファイルがプログラムによって処理されている場合、これまでに処理されたファイルの更新されたカウントを保持することを意味します。Soは、次に、など1 fileに置き換えられます。2 files3 files

以下は、いくつかのファイルを数えて読み込みバーを表示するサンプル コードです。

#!/bin/bash

for a in {1..10}
do
    echo -ne " $a files processed.\r"
    sleep 1
done
echo ""
echo -ne '#####                     (33%)\r'
sleep 1
echo -ne '#############             (66%)\r'
sleep 1
echo -ne '#######################   (100%)\r'
echo -ne '\n'

基本的に、コマンド ライン出力は定期的に上書きされ、ターミナルで原始的なテキスト ベースのアニメーションの効果が得られます。

ここには 2 つの問題があります。

  1. 私が医師から知っていることによると、echoコマンドはまったく移植できません。
  2. bashファイルではなく、pythonプログラムでこれを行いたいです。

Pythonを使用してこれに似た機能を実現する方法はありますか?

4

1 に答える 1

2

Python での同等の実装は次のようになります。

import sys, time

for a in range(1,11):
    sys.stdout.write('\r {0} files processed.'.format(a))
    time.sleep(1)

print('')
sys.stdout.write('\r#####                     (33%)')
time.sleep(1)
sys.stdout.write('\r#############             (66%)')
time.sleep(1)
sys.stdout.write('\r#######################   (100%)')
print('')

デフォルトでは改行が追加されるsys.stdout.writeため、使用する必要があります。printprint-function (Python 3、または Python 2 で明示的にインポート) を使用している場合は、print('text', end=''). あるいは、Python 2 では、print-statement の機能を使用して、次のように行末を抑制することができます。print 'text',

于 2012-11-03T17:35:35.140 に答える