Форум сайта python.su
Добрый день!
Подскажите пожалуйста можно ли как-то работать с очень длинными путями в windows. Сейчас если я пытаюсь удалить папку путь к которой очень длинный, то вылетает ошибка, что такого файла или папки не существует. Можно ли это как-то обойти работая на windows 7?
Офлайн
Может вы сделали ошибку в этом очень длинном пути?
Проверка элементарна, разбейте путь на элементы “some/long/path” -> и переходите по очереди в эти папки os.chdir(“some”);os.chdir(“long”) Путь укоротися и вы проверите какие части в нем правильные.
p.s.
Это очевидно не будет работать если у вас просто очень длинное имя директории. В досе есть сокращенные имена (8.3) их можно узнать командой dir /X
Офлайн
doza_andНет не сделал, пути вычисляются автоматически, в результате обхода содержимого папки при помощи walk. В итоге некоторые папки удаляются (которые лежат “на поверхности”), а некоторые нет.
Может вы сделали ошибку в этом очень длинном пути?
Офлайн
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
[code python][/code]
Отредактировано PEHDOM (Янв. 16, 2018 11:11:42)
Офлайн