Доступ к mtp / ptp-устройству из скрипта python, в разрешении отказано

Мой мобильный телефон Android подключен к моей машине с Ubuntu 20.10. Я пытаюсь установить метку времени последнего изменения для всех файлов в каталоге DCIM / Camera, используя os.utime . Я получаю сообщение об ошибке python OSError: [Errno 95] Операция не поддерживается , что в основном является отказом в разрешении.

  • Скрипт python протестирован и определенно работает в других каталогах. Путь определенно правильный.
  • Телефон подключен нормально, и я могу получить доступ к своим файлам из любой другой программы.
  • Я являюсь владельцем файлов.
  • Разрешения: rw--. Попытка изменить их с помощью chmod дает отказ в разрешении.
  • Sudoing скрипта python не помогает.
  • Подготовка файлов в другом месте и их копирование не помогли, поскольку операция копирования, похоже, изменяет mtime.

Что может Я делаю? Почему это крепление mtp ведет себя иначе, чем что-либо еще?

0
задан 27 December 2020 в 16:19

1 ответ

Оказывается, это желаемое поведение: реализации MTP и PTP предназначены для сохранения возможностей работы с файловой системой в руках подключенного устройства, при этом подключенное устройство и компьютер находятся в иерархии сервер-клиент, причем подключенное устройство является сервером. . Хотя определения протоколов не так легко доступны, кажется, что рукопожатие имеет следующую форму

Получение:

  • физически подключить устройство
  • открыть память
  • устройство выполняет обход каталога и предоставляет компьютеру дерево и списки файлов
  • компьютер отправляет запрос на загрузку файла
  • устройство отправляет копию запрошенного файла
  • список файлов пересылается и соединение закрывается в ожидании ответа.

Отправить:

  • отправлен запрос на передачу файла
  • Android-устройство принимает его
  • устройство получает файл в буфер и активно интегрирует его в свое собственное дерево fs в нужном месте.

Это делает невозможным прямой доступ к свойствам файла, таким как метаданные exif и атрибуты cdate/mdate, как вы интуитивно ожидаете от ftp-подключения или настоящего USB-накопителя. удаленное устройство.

tl;dr Это функция, а не ошибка. Исправление.

0
ответ дан 27 December 2020 в 12:20

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

Похожие вопросы: