и еще)
http://stden.livejournal.com/351636.html
SlonЯ понимаю что на Линухе мне было проще ;)
Это не linux, это винда =))) От держи =)
http://msdn.microsoft.com/en-us/library/ee681827%28VS.85%29.aspx#limits
Максимальная длина имени файла — 256 символов.
Максимальная длина пути — 32,767 символов Юникода, при этом каждый компонент пути не превышает 255 символов.
alex@debian-gate:~$ cat ./test.txt
D:
Documents
242
\xcf\xf0\xee\xe5\xea\xf2\xfb
\xc2\xd3\xc7\xdb
\xcc\xc3\xd3\xca\xc8 \xf2\xe5\xe0\xf2\xf0 \xd5\xe8\xec\xea\xe8
\xce\xf2\xef\xf0\xe0\xe2\xea\xe0
\xc8\xed\xf2\xe5\xf5
\xcc\xc3\xd3\xca\xc8 \xd5\xe8\xec\xea\xe8 30-01-09
\xf1\xe2\xe5\xf2-\xec\xe5\xf5\xe0\xed\xe8\xea\xe0
\xcc\xc3\xd3\xca\xc8 \xd2\xca\xc7 \xd5\xee\xf0\xe5\xee\xe3\xf0\xe0\xf4\xe8\xf7\xe5\xf1\xea\xe8\xe9 \xe7\xe0\xeb \xd1\xe2\xe5\xf2 \xdd\xeb\xe5\xea\xf2\xf0\xee\xec\xe5\xf5\xe0\xed\xe8\xea\xe0
UKI-EO3.07.E7_Shema_razm-ya_oborud-ya._Uroven_svetoregulyatornoi_i_sofitov_repeticionnogo_horeograficheskogo_zala.dwg
alex@debian-gate:~$ cat ./test.txt | wc -L
189
alex@debian-gate:~$cat ./test.txt | wc
12 21 589
SlonБез проблем переместил на рабочий стол и обратно. Думаю что дело все-таки не в винде, т к в Автокаде этот файл нормально открывается - еслиб путь не соответствовам требованиям WinAPI то тоже бы вылетало. Имхо проблема именно в реализации os.stat на винде.
Честно я не думаю что дело в пути, а вот имя файла…. попробуй папку в которой находится файл куданить переместить
Тут узнаешь даст ли тебе винда это сделать. У меня была похожая бага, всплыла когда начал переносить профиль пользователя.
SlonПовторю - файл и папка без проблем копируются или перемещаются куда угодно (проверил раза 3). Как по сети так и локально.
не факт, я уже видел такое. Файл с очень длинным именем. работать можно, скопировать нельзя
Alex2ndrещеfor ph,dirs,files in os.walk(dirpath):
Alex2ndrПереименовать, тогда файл будет доступен.SlonПовторю - файл и папка без проблем копируются или перемещаются куда угодно (проверил раза 3). Как по сети так и локально.
не факт, я уже видел такое. Файл с очень длинным именем. работать можно, скопировать нельзя
updated:
Приношу свои извинения - моя ошибка. Оказывается таких файликов там много (с одинаковым именем). Я смотрел не на тот. Действительно нашел такой файлик который не перемещается, не открывается и не копируется. Вопрос - что с ним сделать можно?
knkdЯ работал с ней несколько раз. К сожалению os.listdir() не способно полноценно заменить os.walk(). Если папка имеет хоть какую-то вложенность, что чтобы пройти на заранее неизвестный ее уровень нужно написать рекурсивную функцию - а сделав это мы и получим тот же самый os.walk() (я смотрел исходники - она так и реализована - смотрит через listdir каталог, потом файлы просто передает, а для каталогов вызывает себя же). К тому же проблема путей не в самой os.walk() а в том к чему она обращается за информацией - isdir, islink, которые в свою очередь обращаются к os.stat и os.lstat , а что там дальше я не осилил т к там уже идут модули на С, а я его не знаю - но все ошибки живут где-то там. Таким образом нет большой разницы чем обрабатывать - os.listdir() или os.walk(). А если вам нужна отработка ошибок, то у os.walk есть параметр onerror в который можно передать функцию для обработки ошибок. Все что я сказал я говорю про линуховый питон 2.5 - но не думаю что виндовый сильно отличается.Alex2ndrещеfor ph,dirs,files in os.walk(dirpath):
Попробуйте не использовать os.walk().
Недавно заметил у него такую особенность поведения - если он думает что путь хоть одного файла внутри каталога слишком длинный, то он исключает из выдачи весь каталог.
То же самое если хоть один файл недоступен.
Я использовал os.listdir() и обрабатывал ошибки отдельно для кажного файла.
Всё под виндой.
SlonУвы - переименовать его тоже нельзя - с ним вообще ничего сделать нельзя - ни открыть, ни копировать, ни переместить, ни удалить. Написали спец скрипт для AVZ - даже он не смог удалить. У меня есть еще 2 варианта - но пробовать я их буду уже на следующей неделе. Причем самое интересное, что я нашел этот файл в 5 местах - но так странно он себя ведет только в 2-х из них.Alex2ndrПереименовать, тогда файл будет доступен.SlonПовторю - файл и папка без проблем копируются или перемещаются куда угодно (проверил раза 3). Как по сети так и локально.
не факт, я уже видел такое. Файл с очень длинным именем. работать можно, скопировать нельзя
updated:
Приношу свои извинения - моя ошибка. Оказывается таких файликов там много (с одинаковым именем). Я смотрел не на тот. Действительно нашел такой файлик который не перемещается, не открывается и не копируется. Вопрос - что с ним сделать можно?
Alex2ndrНе знал. Я именно использовал рекурсивную функцию с обработкой ошибок внутри. А раз разницы нет и переделывать уже не буду :)
Таким образом нет большой разницы чем обрабатывать - os.listdir() или os.walk(). А если вам нужна отработка ошибок, то у os.walk есть параметр onerror в который можно передать функцию для обработки ошибок.