1

私は現在、リモートサーバーからバックアップを収集し、ファブリックを実行しているクライアントにローカルに保存することになっているファブリックフレームワークを使用して python-script を生成しています。

現在、バックアップ ファイルが 400 MB を超えているため、転送にかなりの時間がかかります。そして、ここで私の質問がぶつかります:

ファブリック get() 関数のプログレスバーはありますか? というか、どうにかしてプログレスバーを追加することは可能でしょうか?

これが私のコードの一部です:

def collect_backup():
    env.warn_only=True
    run('uptime')
    print "Copying scrips to be run..."
    filename, remotepath = _getlatest()
    print "Copy complete."
    print "Collecting backup..."
    localpath = _collect(filename, remotepath)

def _collect(filename, remotepath):
    a=remotepath + filename
    localpath="/home/bcns/backups/"
    ####Here's the get() I was talking about
    get(a, localpath)
    return(localpath)

「filename」および「remotepath」変数は、別の関数で設定されます。

4

1 に答える 1

-1

次のサイトには、お得な情報がたくさんあります。

http://thelivingpearl.com/2012/12/31/creating-progress-bars-with-python/

スレッドを使用したコンソール プログ バーのソリューションは次のとおりです。

import sys
import time
import threading

class progress_bar_loading(threading.Thread):

    def run(self):
            global stop
            global kill
            print 'Loading....  ',
            sys.stdout.flush()
            i = 0
            while stop != True:
                    if (i%4) == 0: 
                        sys.stdout.write('\b/')
                    elif (i%4) == 1: 
                        sys.stdout.write('\b-')
                    elif (i%4) == 2: 
                        sys.stdout.write('\b\\')
                    elif (i%4) == 3: 
                        sys.stdout.write('\b|')

                    sys.stdout.flush()
                    time.sleep(0.2)
                    i+=1

            if kill == True: 
                print '\b\b\b\b ABORT!',
            else: 
                print '\b\b done!',


kill = False      
stop = False
p = progress_bar_loading()
p.start()

try:
    #anything you want to run. 
    time.sleep(1)
    stop = True
except KeyboardInterrupt or EOFError:
         kill = True
         stop = True

それが役立つか、少なくとも開始できることを願っています。

于 2013-10-14T13:35:38.247 に答える