Я пытаюсь сравнить удаленные и локальные файлы, основанные на размере и последней измененной временной метке, хранящиеся на удаленном HTTP-сервере, и хранящиеся на локальной машине. Удаленные файлы меняются не так часто, поэтому выполняем быструю проверку вместо простого скачивания. Я знаю, что удаленные файлы не меняются, но когда я записываю их локально, а затем перекомпоновываю, они показывают разный размер файла и временные метки. Как я могу убедиться, что я правильно сравниваю и записываю файлы?
Приведенный ниже код обобщен и показывает только общий процесс проверки.
# Pull metadata on remote files
r = requests.head(url)
remote_file_last_modified = r.headers['last-modified']
remote_file_last_modified = int(time.mktime(datetime.datetime.strptime(remote_file_last_modified[:-4], "%a, %d %b %Y %H:%M:%S").timetuple()))
remote_file_size = int(r.headers['content-length'])
# Get metadata on local files
local_file_last_modified = int(os.path.getmtime(local_file_name))
local_file_size = os.stat(local_file_name).st_size
if remote_file_size != local_file_size or remote_file_last_modified != local_file_last_modified:
# They are not the same
# Download remote files
r = requests.get(url)
remote_file_last_modified = r.headers['last-modified']
remote_file_last_modified = int(time.mktime(datetime.datetime.strptime(remote_file_last_modified[:-4], "%a, %d %b %Y %H:%M:%S").timetuple()))
# This is how the remote file is written locally
with open(local_file_name, 'wb') as f:
f.write(r.content)
# Test remote file was written correctly
remote_file_size = int(r.headers['content-length'])
local_file_size = os.stat(local_file_name).st_size
if remote_file_size != local_file_size:
# Files did not download correctly
else:
# Update the local file times to match the remote file
os.utime(local_file_name,(remote_file_last_modified, remote_file_last_modified))