2010-07-12 6 views
7

मैं फ़ाइलों को स्थानांतरित करने के लिए ftplib का उपयोग कर रहा हूं। सब कुछ अच्छा काम कर रहा है। अब मैं डाउनलोड करने से पहले लक्ष्य फ़ाइल का आकार प्राप्त करने की कोशिश कर रहा हूं।पायथन ftplib डाउनलोड से पहले फ़ाइल का आकार नहीं मिल सकता है?

  1. सबसे पहले, मैंने ftp.size (फ़ाइल नाम) के साथ आकार प्राप्त करने का प्रयास किया। सर्वर ने शिकायत की कि मैं इसे एसीआई मोड में नहीं कर सकता।

  2. फिर मैंने ftp.sendcmd ("बाइनरी") और ftp.sendcmd ("bin") का उपयोग करके बाइनरी मोड सेट करने का प्रयास किया। दोनों ही मामलों में सर्वर शिकायत की "500 द्विआधारी समझा नहीं"

इस उदाहरण में डाउनलोड करने से पहले एक फ़ाइल के आकार पाने ftplib कर सकते हैं? मैं एफ़टीपी सर्वर को नियंत्रित नहीं करता हूं और यह बदल नहीं सकता कि यह कैसा व्यवहार कर रहा है।

धन्यवाद

उत्तर

4

Ftplib डाउनलोड करने से पहले एक फ़ाइल का आकार प्राप्त कर सकते हैं। प्रलेखन कहते हैं:

FTP.size (फ़ाइल का नाम) अनुरोध फ़ाइल सर्वर पर फ़ाइल नाम नामित का आकार। सफलता पर, फ़ाइल का आकार पूर्णांक के रूप में लौटाया गया है, अन्यथा कोई भी वापस नहीं किया गया है। ध्यान दें कि आकार आदेश मानकीकृत नहीं है, लेकिन कार्यान्वयन

जाहिर है अपने सर्वर इस सुविधा का समर्थन नहीं करता कई आम सर्वर द्वारा upported है।

0

"सर्वर ने शिकायत की कि मैं इसे एसीआई मोड में नहीं कर सकता।" - आपके द्वारा उपयोग किए जाने वाले सटीक कोड और सर्वर प्रतिक्रिया का सटीक पाठ दिखाने का प्रयास करें। कॉपी/पेस्ट का प्रयोग करें, स्मृति से टाइप न करें।

क्या आपके पास कमांड लाइन एफ़टीपी क्लाइंट तक पहुंच है? यदि नहीं, तो एक प्राप्त करें। सर्वर का क्या कर सकता है इसके प्रयोग के लिए इसका प्रयोग करें। एक ग्राहक आदेश जैसे REMOTEHELP आपका मित्र है। उदाहरण:

ftp> remotehelp size 
214 Syntax: SIZE <sp> pathname 

यह इंगित करता है कि जिस सर्वर से मैं कनेक्ट था, वह एक SIZE कमांड का समर्थन करेगा।

17

बहुत देर से उत्तर, लेकिन यहां सही जवाब है। यह ProFTPD के साथ काम करता है।

ftp.sendcmd("TYPE i") # Switch to Binary mode 
ftp.size("/some/file") # Get size of file 
+2

पूर्णता के लिए: ASCII उपयोग 'टाइप प्रकार' पर वापस स्विच करने के लिए – ezdazuzena

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^