تحميل جزئي مع Storbinary في بيثون
سؤال
لقد كتبت بعض أكواد بايثون لتنزيل صورة باستخدام
urllib.urlopen().read()
ومن ثم تحميله على موقع FTP باستخدام
ftplib.FTP().storbinary()
ولكن لدي مشكلة.في بعض الأحيان، يتم تحميل ملف الصورة جزئيًا فقط، لذا أحصل على صور مقطوعة بنسبة 20% في الجزء السفلي أو نحو ذلك.لقد تحققت من الإصدار الذي تم تنزيله محليًا ونجحت في تنزيل الصورة بأكملها، مما يقودني إلى الاعتقاد بأنها مشكلة في storbinary.أعتقد أنني أقوم بفتح وإغلاق جميع الملفات بشكل صحيح.هل لدى أي شخص أي أدلة حول سبب حصولي على تحميل جزئي باستخدام Storbinary؟
تحديث:عندما أقوم بتشغيل الأوامر الموجودة في Python Shell، يكتمل التحميل بنجاح، ولا أعرف سبب اختلافه عن التشغيل كبرنامج نصي ...
المحلول 2
لقد مر وقت طويل منذ أن نظرت إلى هذا الرمز، ولكنني أتذكر أن جوهر الأمر هو أنني لم أقم بإغلاق الملف الذي تم تنزيله بشكل صحيح.ومع ذلك، لدي رمز العمل، لذا في حالة وجود مشكلة في التحميل وليس التنزيل، إليك المقتطفان:
إليك كود العمل لتحميل الصورة:
socket = urllib.urlopen(TheURL)
FileContents = socket.read()
LocalFilename = LocalDir + FilenameOnly
LocalFile = open(LocalDir + FilenameOnly, 'wb')
LocalFile.write(FileContents)
LocalFile.close()
أين TheURL
هو عنوان URL للملف الذي أحاول تنزيله، FilenameOnly
هو مجرد جزء اسم الملف من المسار، و LocalDir
هي الوجهة المحلية. أعتقد أن مشكلتي هي أنني لم أتصل LocalFile.close()
.
إليك كود العمل لتحميل الصورة:
FTPServer = ftplib.FTP(FTPServer, FTPUsername, FTPPassword)
UploadFile = open(Filename, "rb")
FTPServer.cwd(FTPSubDirectory)
UploadFile.close()
FTPServer.quit()
ربما كانت المشكلة أيضًا أنني لم أتصل FTPServer.quit()
إذا كان لدى أي شخص أي أسئلة حول هذا الرمز، فسوف أرد بكل سرور في التعليقات؛أشعر بالسوء حقًا لأنني تركت أيًا من موظفي Google معلقًا!
نصائح أخرى
اتضح أنني لم أغلق الملف الذي تم تنزيله بشكل صحيح.دعونا جميعا نتظاهر بأن هذا لم يحدث أبدا.