Я создал PHP-скрипт для обновления веб-сервера, который находится внутри локального каталога. Я переношу скрипт на 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")
@PabloG Вы действительно сделали этот комментарий только что, или меня затянуло во времени?
Что ж, если вы войдете в свойства своего файла в Windows или среде * nix, вы заметите два размера. Один - размер сектора, а второй - фактический размер. Размер сектора - это количество секторов в байтах, которые используются на вашем жестком диске. Это связано с тем, что два файла не могут находиться в одном секторе с большинством современных файловых систем, поэтому, если ваш файл заполняет половину сектора, весь сектор помечается как заполненный.
Таким образом, вы можете сравнивать размер файла сектора с фактическим размером файла на FTP-сервере или наоборот.
Маленькие файлы занимают целый узел файловой системы независимо от размера.
Мой хост имеет тенденцию сообщать обо всех небольших файлах как 4 КБ в ftp, но дает точный размер в оболочке, поэтому это может быть «функцией», общей для ftp-клиентов.
Большое спасибо, это был снимок между глазами, который мне был нужен, я провел все выходные, бьясь головой о стену над этим. Это также относится к обратному сценарию при передаче с ftp.