Найти - Пользователи
Полная версия: Обработка очень длинных путей windows
Начало » Python для экспертов » Обработка очень длинных путей windows
1
alexander4
Добрый день!
Подскажите пожалуйста можно ли как-то работать с очень длинными путями в windows. Сейчас если я пытаюсь удалить папку путь к которой очень длинный, то вылетает ошибка, что такого файла или папки не существует. Можно ли это как-то обойти работая на windows 7?
doza_and
Может вы сделали ошибку в этом очень длинном пути?

Проверка элементарна, разбейте путь на элементы “some/long/path” -> и переходите по очереди в эти папки os.chdir(“some”);os.chdir(“long”) Путь укоротися и вы проверите какие части в нем правильные.

p.s.

Это очевидно не будет работать если у вас просто очень длинное имя директории. В досе есть сокращенные имена (8.3) их можно узнать командой dir /X
alexander4
doza_and
Может вы сделали ошибку в этом очень длинном пути?
Нет не сделал, пути вычисляются автоматически, в результате обхода содержимого папки при помощи walk. В итоге некоторые папки удаляются (которые лежат “на поверхности”), а некоторые нет.
Так что тут проблема именно в обработке windows длинных путей.
PEHDOM
alexander4 все зависит от того каким модулем для работы с путями\удалении вы пользуетесь. У венды есть “огрничение” в 255 символов для имени файла. НО существуют ограничения на длину имени файла и на длину пути. Абсолютное ограничение длины имени файла вместе включая путь к нему равно 260 символам, данное значение определено константой MAX_PATH в Windows API.

Выше doza_and уже написал нектороые пути решения проблемы как то: использовать пути формата 8.3, или переходить по очереди в подпапку.
Добавлю что в WINAPI есть юникод версии функций у которых ограничение на длинну пути составляет 32767 символов, в частности CopyFileW, DeleteFileW, RemoveDirectoryW. Можно использовать их напрямую через ctypes, или используя библиотеку pyWin32

Детальнее при имена файлов\папок и ограниченя венды читаем: https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa365247(v=vs.85).aspx
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB