У меня есть iPhone, который был заархивирован в Ma c с помощью iTunes. iPhone полностью сломался, потеряв все фотографии, которые не были загружены в iCloud.
В новом iPhone недостаточно места для восстановления полной резервной копии, поэтому я пытаюсь вернуть фотографии обратно. Сначала я подумал, что мне нужно будет заплатить за сложную часть программного обеспечения для восстановления, но затем я обнаружил, что фотографии были сохранены в папке резервной копии с (как мне кажется,) случайными именами и без их расширения.
Первое, что приходит на ум, - это создать python скрипт. Вот что нужно было сделать:
- Итерация по главному каталогу.
- Итерация по всем меньшим каталогам внутри этого каталога.
- Для каждого файла внутри каталог: проверьте тип файла и, если это изображение или видео (JPG или MOV), переименуйте его в разумное имя (например, «1.jpg») и добавьте тип файла в конец имени (например, «.jpg» ) затем скопируйте его в другой каталог.
Это сценарий, который я написал:
import os
path = input('Path: ')
out_path = input('Output path: ')
n = 0
for folder in os.listdir(path):
for filename in os.listdir(os.path.join(path, folder)):
filepath = os.path.join(path, folder, filename)
if filename.endswith('.jpg'):
os.rename(filepath, os.path.join(path, folder, str(n) + '.jpg'))
os.move(os.path.join(path, folder, str(n) + '.jpg'), out_path)
n += 1
if filename.endswith('.mov'):
os.rename(filepath, os.path.join(path, folder, str(n) + '.mov'))
os.move(os.path.join(path, folder, str(n) + '.mov'), out_path)
n += 1
Проблема в том, что этот сценарий выполняется без ошибок. Он запускается сразу после того, как вы ввели каталоги, но ничего не печатает, ничего не делает и не выдает ошибок (добавление оператора печати в l oop ничего не делало).
У меня присоединено фиктивная папка с некоторыми изображениями в папках, если люди думают, что знают ответ. У меня нет ни одного изображения, это только те изображения, которые я нашел в Google для тестирования.
Я бы не стал загружать какое-либо сложное программное обеспечение, потому что Ma c, упомянутая с резервной копией, довольно все равно медленно Я был бы открыт для любых других способов решения этой проблемы.
Большое спасибо!
РЕДАКТИРОВАТЬ: Это обновленный сценарий до сих пор, я не совсем понимаю использование os.walk()
. Как бы я это реализовал?
import os
import filetype
import shutil
path = input('Path: ')
out_path = input('Output path: ')
n = 0
for filepath in os.walk(path):
kind = filetype.guess(''.join(filepath))
if kind.extension == 'jpg' or kind.extension == 'mov':
shutil.copyfile(filepath, os.path.join(out_path, str(n)+'.'+kind.extension))
n += 1