私はMacOSs Sierraでpython2.7.10を使用していて、自分のraspberrypiとのssh接続を介してrsyncを作成しました。アイデアは、自分のローカルフォルダと、自分のリモートフォルダをraspberrypi上で同期させることです。Tkinterウィジェットでターミナルステータスを表示
私の関数syncroFolder()はうまくいきますが、私のtkinterウィンドウにリアルタイムステータスを表示するにはどうしたらいいですか?簡単な解決策はありますか?私は投稿の質問を理解することはできません。
def syncroFolder():
os.system("rsync -avz -e \"ssh -p port\" /source/path /folder/to/rcync ")
はあなたの助け
2017年9月5日をありがとう「のTkinterのGUIにコマンドラインの結果をリダイレクトする」: 私が書くために管理しました「| Tシャツは、」私のコマンドは、現在
os.system("rsync -avzr -P --info=progress2 -e \"ssh -p %s\" %s %s | tee %s & " %(port,dossier,destination,exampleOutputTxtAdd))
次のようになり、私はファイル
の最後の行を表示Tkinterではテキストボックスを作成していると、ファイル内の結果status, lastLineInFile = commands.getstatusoutput("tail -n 1 "+ exampleOutputTxtAdd)
T.insert(END,'Transfering: \n'+lastLineInFile)
出力ファイルは次のようになります。
sending incremental file list
folder/
0 0% 0.00kB/s 0:00:00 (xfr#0, to-chk=397/410)
folder/Bigfile.avi
32,768 0% 0.00kB/s 0:00:00
2,555,904 0% 2.39MB/s 0:07:18
3,112,960 0% 1.41MB/s 0:12:23
3,637,248 0% 1.11MB/s 0:15:44
が、テキストボックスには、私はの-n = 1行を読んでいても、すべてのそれらのライン
Transfering
3,776 0% 0.00kB/s 0:00:00
16,567,040 1% 13.69MB/s 0:01:15
を示し、行を追加し続けます出力ファイル。
私は--out-format = \ "%t%o%f%b \"を使用しようとしていましたが、転送後(大ファイルの場合)私は多くのオプションを試してみましたが、私にとってはうまくいきませんでした...なぜ出力ファイルの最後の行だけが表示されないのかわかりません。 ご意見はありますか?
タイムラインのテキストボックスに1行ずつデータを書き込むことができます。それは十分に簡単なはずです。 –
しかし、プログラムがrsyncコマンドを実行すると、結果が端末に表示され、同期が完了するまでプログラム(Tkinterウィンドウ)がフリーズします。私はスレッドを読むのはTkinterの良い考えではありません。私の場合、timedループは以前の場合にのみ動作します(しかしrsyncを実行しません)。とにかく、とにかく、おかげで、 –
/あなたはファイルにデータを同期させ、そのファイルを読み込み専用モードで読み込み、それを使ってtkinterテキストボックスを現在のデータで更新した状態に保ちます。これにより、発生している問題を防ぐことができます。 syncコマンドを分離する必要がある場合は、tkinterでマルチプロセッシングを調べる必要があります。 –