Различия в размере файла после копирования файла на сервер через 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()

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
44
0
4 671
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

f = open (locfile, "rb")

Большое спасибо, это был снимок между глазами, который мне был нужен, я провел все выходные, бьясь головой о стену над этим. Это также относится к обратному сценарию при передаче с ftp.

snarkyname77 23.11.2009 17:16

@PabloG Вы действительно сделали этот комментарий только что, или меня затянуло во времени?

David Sykes 25.06.2010 17:00

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

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

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

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

Другие вопросы по теме