سؤال

لقد قمت بإنشاء PHP-script لتحديث خادم الويب الموجود داخل دليل محلي.أقوم بترحيل البرنامج النصي إلى Python.إنه يعمل بشكل جيد في معظم الأحيان، ولكن بعد أمر PUT، يبدو أن حجم الملف يتغير.وبالتالي، يختلف حجم الملف عن حجم الملف الموجود على الخادم.

بمجرد أن أقوم بتنزيل الملف مرة أخرى من خادم FTP، يكون الاختلاف الوحيد هو علامة CR/LF.هذا يزعجني لأن نفس البرنامج النصي يقارن حجم الملفات المطلوب تحديثها.أيضًا، في حال كان ذلك يعني أي شيء، فإن البرنامج النصي يعمل بشكل مثالي في PHP عبر ftp_put.

from ftplib import FTP

ftpserver = "myserver"
ftpuser = "myuser"
ftppass = "mypwd"

locfile =  "g:/test/style.css"
ftpfile =  "/temp/style.css"

try:
    ftp = FTP(ftpserver, ftpuser, ftppass)
except:
    exit ("Cannot connect")

f = open (locfile, "r")
try:
    ftp.delete (ftpfile)
except:
    pass

# ftp.sendcmd ("TYPE I")
# ftp.storlines("STOR %s" % ftpfile, f)
ftp.storbinary("STOR %s" % ftpfile, f)
f.close()

ftp.dir (ftpfile)
ftp.quit()

أي اقتراحات؟

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

المحلول

هل تحتاج إلى فتح ملف locfile باستخدام ثنائي rb?

f = open (locfile, "rb")

نصائح أخرى

حسنًا، إذا انتقلت إلى خصائص ملفك في نظام التشغيل Windows أو بيئة *nix، فستلاحظ وجود حجمين.الأول هو حجم القطاع والآخر هو الحجم الفعلي.حجم القطاع هو عدد القطاعات بالبايت التي يتم استخدامها على القرص الثابت الخاص بك.وذلك لأنه لا يمكن وجود ملفين في نفس القطاع مع معظم أنظمة الملفات الحديثة، لذلك إذا كان ملفك يملأ نصف القطاع، فسيتم وضع علامة على القطاع بأكمله على أنه ممتلئ.

لذلك قد تقوم بمقارنة حجم ملف القطاع بحجم الملف الفعلي على خادم FTP أو العكس.

تشغل الملفات الصغيرة عقدة كاملة في نظام الملفات مهما كان حجمها.

يميل مضيفي إلى الإبلاغ عن جميع الملفات الصغيرة بحجم 4 كيلو بايت في بروتوكول نقل الملفات ولكن في الصدفة يعطي حجمًا دقيقًا لذلك قد تكون "ميزة" شائعة لعملاء بروتوكول نقل الملفات.

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