2013-01-14 41 views
-1

我試圖在Python中使用ftplib庫試圖將一些視頻FTP傳到我的網站。我有一個基本的「工作」的腳本,但它有一個問題。當我嘗試使用VLC播放器播放視頻時,它看起來已經損壞了,因爲它只播放視頻的前15秒(可能直到視頻中的某個重要關鍵幀,但除此之外可能還有),然後是僅音頻有時會繼續。視頻顯示通過Python上傳損壞ftplib

奇怪的是,如果我在本地目錄和遠程目錄上執行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

+0

「兩端的MD5校驗和也是一樣的」 - 然後是相同的數據(或者你很幸運能夠找到MD5碰撞:)。您是否嘗試用同一個播放器播放原始文件? –

+0

原始文件確實有效。不幸的是,我的測試中有一部分我沒有考慮:下載文件(上傳到FTP站點)並在VLC中本地播放(甚至是QuickTime)。這兩個工作都很好。所以我猜這只是流式傳輸文件的問題(無論是在軟件中還是因爲我的網絡主機)。哎呀! – Devin

回答

1

所以希望你能從關於原始問題的評論中看到這個問題是測試的問題,而不是代碼。

經驗教訓在這裏:

  1. 如果你的校驗和匹配,讓該死的肯定你的文件是不是實際上是相同的。這比一些奇怪的邊緣情況下的情況要大1000倍(正如我最初認爲的那樣)
  2. 如果您在Stack Overflow帖子中提供可操作的項目(如「下載我的視頻以查看您自己」),則應該可能會自己測試一下。

所以我想這個問題現在至少是好的a)通過FTP使用Python上傳文件的參考和b)在Stack Overflow上提出問題的好教訓!