Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 18, 2012 10:39:15

IRON
От:
Зарегистрирован: 2012-01-15
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

python, win7 проблема с обратными слешами

Всем привет.
в программе используются пути, а поскольку символ обратного слеша служит для экранирования, то все пути собирал с использованием двойного слеша, как и написано в описании синтаксиса.
пример пути:

mypath='c:\\foo\\bar'
Писал и тестировал свою программу на win7 pro - всё замечательно работало. После чего собрал через py2exe и перенёс на другую машину, на которой предполагалось использование этой программы. Естественно протестировал работоспособность exe-шника на своей машине.
Вторая машина управляется win7 enterprise, запускаю там скрипт - пишет что не может найти путь… в итоге там все пути рисуются с двойным слешом, соответственно система их не понимает. Пробовал запускать и exe-шник и оригинальный файл .py через интерпретатор.
Пробовал добавлять перед значениями и r и/или u - результат не изменился.
mypath=r'c:\\foo\\bar'
В чём может быть причина такого поведения?
Как таковых ошибок программа не выдают, только исключение в котором говорится об отсутствии требуемого пути и указан этот путь.



Офлайн

#2 Янв. 18, 2012 12:18:20

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

python, win7 проблема с обратными слешами

Разумней не хардкодить слеши, а использовать os.path.sep:

>>> import os
>>> os.path.sep
'\\'
>>> os.path.join("foo","bar")
'foo\\bar'
>>>
Может это и поможет.



Офлайн

#3 Янв. 18, 2012 12:46:48

IRON
От:
Зарегистрирован: 2012-01-15
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

python, win7 проблема с обратными слешами

Спасибо за совет, но увы, в той системе это не работает, переписал все пути с использованием os.path.join - всё равно не находит путь из-за лишних слешей.
более того os.path.sep так же показывает

>>> import os
>>> os.path.sep
'\\'
>>> import locale
>>> print locale.getpreferredencoding()
cp1251
кодировка тоже вроде такая же как и в системе на которой писал и тестировал программу.



Офлайн

#4 Янв. 18, 2012 13:07:38

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

python, win7 проблема с обратными слешами

а у вас, случаем, русских символов нет в пути?



Офлайн

#5 Янв. 18, 2012 13:17:01

IRON
От:
Зарегистрирован: 2012-01-15
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

python, win7 проблема с обратными слешами

нет, только английские буквы и цифры



Офлайн

#6 Янв. 18, 2012 13:49:47

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

python, win7 проблема с обратными слешами

Можно эксепшен увидеть?



Офлайн

#7 Янв. 18, 2012 15:03:47

IRON
От:
Зарегистрирован: 2012-01-15
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

python, win7 проблема с обратными слешами

Исключение было примерно такое:
Windows error code: 3

Проблема была в кривизне моих рук и отсутствием опыта работы с windows.
А если подробнее, то не правильно формировался один из путей и соответственно… Поведение windows мне не знакомо - это первая программа которую я пишу под эту ос, учился и писал программки исключительно в linux

Спасибо всем за помощь.



Офлайн

#8 Янв. 18, 2012 15:19:16

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

python, win7 проблема с обратными слешами

То есть проблема решена?



Офлайн

#9 Янв. 18, 2012 15:26:57

IRON
От:
Зарегистрирован: 2012-01-15
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

python, win7 проблема с обратными слешами

Да



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version