私はPythonのファブリックを使用して、sshを使用してリモートホスト上でいくつかのタスクを実行しています。
タスクの1つは、サブタスクの進行状況バーを表示するときに、出力にキャリッジリターン文字を使用します。これに似た何か:Pythonのファブリックのキャリッジリターン( r)文字の処理
int main(int argc, char* argv[]) {
int i;
for (i = 0; i <= 5; ++i) {
printf("\rProgress: %d%%", (int)(100 * ((float)i/5)));
fflush(stdout);
sleep(1);
}
printf("\n");
return 0;
}
これはPythonの生地を使用して実行されます:
def some_task():
with settings(user = 'root'):
run('./task_with_progress_bar.out')
tasks.execute(some_task, hosts = ['server_name'])
ファブリック\r
を無視し、代わりに1行でプログレスバーを持つのだろう、私は何を買ってあげることです。
[server_name] Executing task 'some_task'
[server_name] run: ./task_with_progress_bar.out
[server_name] out:
[server_name] out: Progress: 0%
[server_name] out: Progress: 20%
[server_name] out: Progress: 40%
[server_name] out: Progress: 60%
[server_name] out: Progress: 80%
[server_name] out: Progress: 100%
[server_name] out:
\r
が\n
...
上記の例はそれほど悪くはありませんが、私が実際に実行している作業はプログレスバーで満たされており、小さなステップで進行し、コンソール全体が不必要な出力で汚染されます。
Fabricが\r
を無視しないように出力をカスタマイズする方法はありますか?同じ一般的な形式のままにしてください。[<server_name>] <action_being_taken>
?私はこの形式が好きです、それはきれいできれいです。
のあなたが特定の値でのみ更新するプログレスバーの出力を抑制することができfalseの場合、すなわち間隔を使用すると、進行状況の出力ではなく、他の出力を抑制したいですか? – malbarbo
いいえ出力を抑止しません。私はそれでも '[server_name]という形式で表示させたいだけです。プログレスバーは複数の行には出力されません。私はそれが進行を示す1つの行に印刷されたい... –