Различия в размерах файлов после копирования файла на сервер через FTP

Я создал 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()

Какие-либо предложения?

5.08.2008 13:40:47
3 ОТВЕТА
РЕШЕНИЕ

Вам нужно открыть locfile в двоичном виде с помощью rb?

f = open (locfile, "rb")
15
24.05.2016 18:40:07
Большое спасибо, это был выстрел между глазами, в которых я нуждался, я провел все выходные, стуча головой об стену по этому поводу. Это также относится и к обратному сценарию, перенося с ftp.
snarkyname77 23.11.2009 14:16:27
@PabloG Вы действительно сделали этот комментарий только сейчас, или меня затянуло время?
David Sykes 25.06.2010 13:00:23

Хорошо, если вы перейдете под свойства вашего файла в среде Windows или * nix, вы заметите два размера. Один - это размер сектора, а второй - фактический размер. Размер сектора - это количество секторов в байтах, которые используются на вашем жестком диске. Это связано с тем, что два файла не могут находиться в одном секторе с большинством современных файловых систем, поэтому, если ваш файл занимает половину сектора, весь сектор помечается как заполненный.

Таким образом, вы можете сравнивать размер файла сектора с фактическим размером файла на FTP-сервере или наоборот.

3
5.08.2008 13:45:47

Маленькие файлы занимают целый узел в файловой системе любого размера.

Мой хост имеет тенденцию сообщать обо всех маленьких файлах как 4kb в ftp, но в оболочке дает точный размер, так что это может быть «функцией», общей для клиентов ftp.

0
5.08.2008 15:59:24