سؤال

لقد كتبت بعض أكواد بايثون لتنزيل صورة باستخدام

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 معلقًا!

نصائح أخرى

اتضح أنني لم أغلق الملف الذي تم تنزيله بشكل صحيح.دعونا جميعا نتظاهر بأن هذا لم يحدث أبدا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top