2017-11-16 13 views
0

FTP経由でファイルを送信すると想定されるこのコードを記述しました。問題は、3/5のケースでファイルが完全に相手側に届いていないことです。リトリーブを使用しなければならないことを理解しています。私は作業のためにこのコードを書いていますので、コードの不快な「硬化」部分は無視してください。現在、相手側に完全に届いているファイルは.binファイルとImageファイルだけです。 - それらは2つの最小のファイルで、他のファイルはかなり大きい(最大は19000 kbです)。 ファイルをダウンロードすると、元のサイズに比べて非常に小さくなります。 3500kbと比較して10000kb。 141kbと比較して14000kbであった。Python FTPがフルファイルを送信しない

ftp = FTP('REDACTED') 
ftp.login('REDACTED', 'REDACTED') 
print ("Opening FTP...\n") 
    with open ('REDACTED.gz.uboot') as f: 
    print ('writing file...REDACTED.gz.uboot') 
    ftp.storbinary('STOR %s' % 'REDACTED.gz.uboot', f) 

with open('REDACTED_Image', 'rb') as x: 
    print ("writing file...REDACTED_Image") 
    ftp.storbinary('STOR %s' % 'Image', f) 

with open('REDACTED.rbf', 'rb') as f: 
    ftp.storbinary('STOR %s' % 'huh.rbf', f) 
    print ("writing file...m0_host_top.rbf") 

with open ('REDACTED.tar.bz2') as f: 
    print ('writing file...REDACTED') 
    ftp.storbinary('STOR %s' % 'REDACTED', f) 

with open ('REDACTED.bin') as f: 
    print ('writing file...REDACTED.bin') 
    ftp.storbinary('STOR %s' % 'REDACTED.bin', f) 

ここで助けがあれば、全ファイルを取得する必要があります。 編集:ファイルがアップロードされるたびにサイズが異なるため、アップロードに問題があると推測しています。

+0

だけ明確にするために、私が取得使用していますローカルで実行中のスクリプトを持っています。一度バイナリファイルが横断している。しかし、完全なバイナリファイルはすべての方法を横切って取得されていません – Cwhelden

+0

それは可能性があります。しかし、私は何度もアップロードを試みましたが、試みるたびに、アップロードが完了するとファイルのサイズが異なります。 – Cwhelden

+0

ftplibログ( 'FTP.set_debuglevel')とサーバー側のログ(アクセス権がある場合)を表示します。 –

答えて

0

すべてのファイルをバイナリモードで送信しているので、すべてのファイルを 'rb'モードで開く必要があります。

デフォルトopen()は、テキストモードを使用してファイルを開きます。つまり、すべてのコンテンツをテキストとして扱います。上記の場合、REDACTED.tar.bz2のようなバイナリファイルがあります。テキストモードを使用してこれらのファイルを読み取ると、ファイルの内容が元のファイルの内容と異なることになります。

この質問はopen()であなたを助けるかもしれない:Difference between parsing a text file in r and rb mode:

関連する問題