2016-10-17 14 views
1

私はpexpectを使ってすべてのトレントファイルをscpでサーバに送信しようとしています。これはほとんどの部分で機能しますが、すべてのトレントファイルが送信されるわけではありません。 'if i == 0'のprint関数はすべてのトレントを表示します。私がサーバーに行って、送信されたものをすべて削除してもう一度実行すると、同じトレントファイルが送信されます。誰が問題が何であるか知っていますか?pexpectを使ってPythonでファイルを送信するPython

import os 
import getpass 
import subprocess 
import pexpect 

filepath = 'my downloads dir' 

os.chdir(filepath) 

var_password = str(getpass.getpass()) 
destination = "[email protected]:dir" 

for filename in os.listdir(): 
    if filename.endswith('.torrent'): 
     try: 
      var_command = "scp " + filepath + filename + " " + destination 

      var_child = pexpect.spawn(var_command) 
      i = var_child.expect(["password:", pexpect.EOF]) 

      if i==0: # send password    
       print('Sending: ' + filename)  
       var_child.sendline(var_password) 
       var_child.expect(pexpect.EOF) 
      elif i==1: 
       print("Got the key or connection timeout") 
       pass 
     except Exception as e: 
      print("Oops Something went wrong buddy") 
      print(e) 
+1

'* .torrent'ファイルのアーカイブを作成して、それを' scp'で送信してみませんか? また、スクリプト内のscpコマンドはどこですか? 'var_command'? – JazZ

+0

var_commandとは何ですか?また、接続にタイムアウトが発生したり、おそらくサーバーに互換性のない文字/スペースを持つファイルを送信している可能性があります。 – David

+0

ここでは、コードをリファクタリングするときに私はそれを削除して申し訳ありません。しかし、私はそれが大規模なシステムの一部になるようにこれを動作させようとしています – hjaltist

答えて

1

デビッドのコメントのおかげで、私はそれを理解したと思います。スペースとアイスランドの文字を含むファイル(私はアイスランド語なので)は転送されません。

+0

あなたのユーザー名から、私はあなたがスウェーデン人だと思っていました。少なくとも右半球。 – David

関連する問題