Отпишись как победишь проблему.
Как вариант решения, попробовать открыть файл в hex редакторе и отрезать часть имени. (сам так не делал, чисто теория)
SlonРешил проще гораздо. Один из файликов удалил вместе с папкой - там больше ничего не было. Второй удалил так - примонтировал к линуховому серваку эту папку и удалил из линуха.
Отпишись как победишь проблему.
Как вариант решения, попробовать открыть файл в hex редакторе и отрезать часть имени. (сам так не делал, чисто теория)
IDLE 2.6.1 ==== No Subprocess ====
>>>
Traceback (most recent call last):
File "F:\test-pybkpdoc.py", line 97, in <module>
print findfldt('D:\\Documents\\242\\Проекты')
File "F:\test-pybkpdoc.py", line 41, in findfldt
fltimes.append( (os.path.getmtime(fullp),fullp) )
File "C:\Python26\lib\genericpath.py", line 54, in getmtime
return os.stat(filename).st_mtime
WindowsError: [Error 2] : 'D:\\Documents\\242\\\xcf\xf0\xee\xe5\xea\xf2\xfb\\\xd1\xef\xee\xf0\xf2\\\xe3 .\xcc\xf3\xf0\xec\xe0\xed\xf1\xea\\\xcb\xe5\xe4\xee\xe2\xfb\xe9 \xe4\xe2\xee\xf0\xe5\xf6\\\xc8\xf1\xf5\xee\xe4\xed\xfb\xe5\\15-10-08\\\xcb\xe5\xe4\xee\xe2\xfb\xe9_\xef\xee\xf1\xeb\xe5\xe4\xed\xe5\xe5\\T\xf5\xf4\xfe\xf2v\xf9_\xff\xfe\xb8\xfb\xf5\xf4\xfd\xf5\xf5'
ERROR_FILE_NOT_FOUNDУ кого какие идеи?
2 (0x2)
The system cannot find the file specified.
vcowХхе… Она у меня первоначально была utf8 (я же заголовок с линя притащил). Если ставить utf8 то внутри пути, содержащие кириллицу писать не получается (точнее получается - но дальше он их не воспринимает).
попробуй вторую строку заменить на
# -*- coding: utf8 -*-
Легко может быть, что после этого все заработает
Андрей СветловСпасибо, не знал про mbcs - думал везде cp1251. Под линухом все проще оказывается - пиши себе в utf8 и все сойдется.
ребята, опять те же грабли.
Ставьте
# -*- coding: utf8 -*-
или что хотите. Это влияет только на кодировки для строчек - не для файловой системы.
Windows использует для файлов кодировку mbcs
Для этого нужно вашей *юникодной* строке перед передачей в файловые функции сказать u.encode('mbcs')
Юникод получается через s.decode('utf8') если исходная строка была в нем (надеюсь, вы знаете кодировки ваших строк).
Чтобы скрипт был кроссплатформенным, вместо ‘mbcs’ нужно писать sys.getfilesystemencoding()
Для linux обычно возвращается ‘utf-8’
Предпочитаемая кодировка операционной системы - locale.getpreferredencoding()
В общем случае она не совпадает с файловой.
Кодировка для потоков ввода-вывода - sys.stdin.encoding, sys.stdout.encoding
И так далее.
В linux это незаметно - там везде utf8
Андрей СветловДа, ошибся. Не сразу догадался что вы переменной s обозначили тип str, а переменной u - тип unicode. Надо так -
Примерно так. Только будьте внимательны - .decode применять только к unicode, а .encode - к str типам. Питон не ругнется на неправильное использование - но результат будет отличаться от ожидаемого. Т.е. в
>>> Затем все имена файлов/пути я конвертирую с помощью s.decode(sys.getfilesystemencoding())
вы допустили ошибку.