-1

Pythonでftplibライブラリを使用して、いくつかのビデオを自分のWebサイトにFTPで転送しようとしています。基本が「機能する」スクリプトがありますが、問題があります。VLCプレーヤーを使用してビデオを再生しようとすると、ビデオの最初の15秒間(おそらくビデオの重要なキーフレームまで)、次にオーディオのみが再生されるため、破損しているように見えます。時々続く。

奇妙なことにls -l、ローカルディレクトリとリモートディレクトリの両方でを実行すると、ファイルサイズは同じになります(Macはローカルでファイルサイズを75.6 MBと計算しますが、cPanelファイルマネージャーは71.2 MBと表示します)。 。再確認するために、両端のMD5チェックサムも同じであることがわかりました。しかし、明らかに、データはサーバー側で完全に正しいわけではありません。たぶん、Pythonスクリプトで.movファイルを正しく開いていない可能性があります。これは、ファイルやファイルのようなオブジェクトに頭を巻くのに少し時間がかかったためです(つまり、まだ間違っている可能性があります)。

これは私の現在のアップロードスクリプトです:

#!/usr/bin/env python

import os
from ftplib import FTP

# Log in to the FTP server
ftp = FTP('campusweatherservice.com')
ftp.login('myusername', 'mypassword')

# Change directories to the intended video source
os.chdir('/Users/cws/Desktop/CNET')

f = file('cnet.mov', 'rb')         # Currently opening the file as a file object
ftp.storbinary('STOR CNET.mov', f) # We then try to store it this way

# Close our file object and then quit the FTP client
f.close()
ftp.quit()

ここで私の側に何か考えや明らかな間違いはありますか?ビデオファイルを自分で試してみたい場合は、http://www.campusweatherservice.com/CNET/CNET.movにあります。

4

1 に答える 1

1

したがって、元の質問に対するコメントから、この問題がコードではなくテストの問題であることがわかると思います。

ここで学んだ教訓:

  1. チェックサムが一致する場合は、ファイルが実際には同一ではないことを確認してください。それは、いくつかの奇妙なフリンジケースよりも1000倍の可能性があります(私が最初に考えたように)
  2. スタック オーバーフローの投稿で実行可能な項目 (「ビデオをダウンロードして自分で確認してください」など) を提供する場合は、おそらく自分でテストする必要があります。

したがって、この質問は、少なくとも a) Python を使用して FTP 経由でファイルをアップロードするためのリファレンスとして、および b) スタック オーバーフローで質問するための良いレッスンとしては良いと思います!

于 2013-01-15T05:19:40.347 に答える