Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 7, 2008 10:29:45

Dimka665
От:
Зарегистрирован: 2008-09-19
Сообщения: 177
Репутация: +  0  -
Профиль   Отправить e-mail  

при перетаскивании файла на exe меняется относительный путь

сейчас расскажу в чем дело)))
собрал при помощи py2exe консольный исполняемый файл. сама программа прекрасно работает. первым параметром получает имя файла, что-то с ним делает и при работе использует файл ttt.txt, который располагается в той же папке, что и программа и при вызове указывается относительный путь.
проблема заключается в следующем. при запуске этой программы из консоли вот так:
cd c:\blabla\
prog.exe argfile1.txt
sys.argv равен “argfile1.txt” и файл ttt.txt находится.

но при вызове программы путем перетаскивания мышкой argfile1.txt на prog.exe:
sys.srgv равен абсолютному пути файла argfile1.txt, то есть “с:\blabla\argfile.txt” и файл ttt.txt не находится. а ищется он на рабочем столе.

надо чтобы программа работала в обоих случаях. раньше такого не наблюдалось. пока видится только 1 путь решения)



Офлайн

#2 Окт. 7, 2008 12:03:37

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

при перетаскивании файла на exe меняется относительный путь

Я решил эту проблему так:

import some_module
print some_module.__file__
и далее все относительные пути пишутся с учетом того где лежит твоя прога, а не того откуда она запущена.
У тебя какой путь решения?



Офлайн

#3 Окт. 7, 2008 12:41:16

Dimka665
От:
Зарегистрирован: 2008-09-19
Сообщения: 177
Репутация: +  0  -
Профиль   Отправить e-mail  

при перетаскивании файла на exe меняется относительный путь

py2exe убирает атрибут __file__ из объектов-модулей.
вобщем надо использовать sys.executable. всегда возвращает абсолютный путь к exe.
http://www.py2exe.org/index.cgi/WhereAmI



Офлайн

#4 Окт. 7, 2008 19:52:16

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

при перетаскивании файла на exe меняется относительный путь

Может быть я что то не так делал, но у меня этот способ работал и работает в одной из программ которую сделал и пользуюсь. И работает он и при перетаскивании и по клику на ярлык :-)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version