مفقود السطر الأول عند تنزيل ملف .rar باستخدام Urllib2.urlopen ()

StackOverflow https://stackoverflow.com/questions/552328

  •  23-08-2019
  •  | 
  •  

سؤال

حسنا هذا غريب حقا. لدي هذا البرنامج النصي الذي يقوم بتنزيل مجموعة من تحقيق الملفات واستخراجها بشكل أساسي. عادة تلك الملفات هي ملفات .zip. جلست اليوم وقررت أن أجعلها تعمل مع ملفات RAR وحصلت على عالقة. في البداية اعتقدت أن المشكلة موجودة في كود إلراز الخاص بي، لكنها لم تكن هناك. لذلك أنا فعلت:

f = urllib2.urlopen(file_location)
data = StringIO(f.read())
print data.getvalue()

هيك أنا حتى فعلت:

f = urllib2.urlopen(file_location)
print f.read()

لأنني أردت فقط أن أرى الجزء الأول والنتيجة هي نفسها - أنا أفتقد السطر الأول من ملف .rar.

إذا كنت تستخدم متصفح الويب لتنزيل نفس الملف، فكل شيء على ما يرام، فهو غير فاسد.

هل يمكن لأي شخص أن يشرح لي ماذا بحق الجحيم يحدث هنا؟ وماذا عليك القيام به مع نوع الملف.

هل كانت مفيدة؟

المحلول

هل تحتوي البيانات على حرف "إرجاع النقل" (" r") بحيث يتم الكتابة فوق الجزء الأول مع بيانات لاحقة عند محاولة عرضه؟ سيشرح هذا السبب في أنك لا ترى الجزء الأول في إخراجك، ولكن ليس لماذا لا تتمكن من فك تشفيره لاحقا.

نصائح أخرى

عند محاولة تحديد محتوى سلسلة البيانات الثنائية، استخدم repr() أو hex(). وبعد علي سبيل المثال،

>>> print repr(data)
'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t'
>>> print [hex(ord(c)) for c in data]
['0x0', '0x1', '0x2', '0x3', '0x4', '0x5', '0x6', '0x7', '0x8', '0x9']
>>>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top