Как сравнить размеры файлов в Windows и Linux с ascii? - PullRequest
1 голос
/ 30 января 2010

Я работаю над скриптом Python, который будет загружать кучу файлов на FTP-сайт. Чтобы проверить, изменился ли файл, я сравниваю размеры файлов. Проблема в том, что файлы, которые я загружаю, имеют окончание строки \ r \ n, но при передаче через FTP (режим ascii в Linux) преобразуется в \ n окончания строки. Очевидно, я теряю кучу байтов в этом процессе, поэтому я не могу больше сравнивать размеры файлов.

Я не уверен, что лучший способ продолжить здесь. Преобразовывать из \ r \ n в \ n на лету при проверке размеров файлов? Загрузить все в двоичном режиме? Прекратить сравнение размера файла?

Ответы [ 2 ]

1 голос
/ 30 января 2010

Использование размеров файлов - плохая идея, если только они не могут увеличиться только в случае их изменения (хотя, как правило, это не так, если только они не являются файлами журналов или чем-то еще).

Одним из вариантов является отслеживание контрольной суммы (обычно используется md5sum) для каждого файла (который также может быть загружен на FTP-сервер). Если контрольная сумма совпадает с тем, что находится в главном файле контрольной суммы, то ничего не изменилось, в противном случае загрузите измененный файл и обновите сумму md5 этого файла.

1 голос
/ 30 января 2010

Я бы не стал проверять, изменился ли файл в зависимости от размера файла. Поскольку это текст в формате ascii, файл мог измениться и иметь точно такое же количество байтов.

...