% windir% в Python? - PullRequest
       19

% windir% в Python?

0 голосов
/ 05 марта 2010

Как я могу сделать что-то вроде

if sys.argv[0] != '%windir%\\blabla.exe'

У меня вообще нет успеха

Ответы [ 5 ]

5 голосов
/ 05 марта 2010
import os
if sys.argv[0] != os.path.join(os.environ['WINDIR'],'blalah.exe'):
4 голосов
/ 05 марта 2010

Это должно проиллюстрировать, как получить местоположение Windows:

>>> import os
>>> os.environ['windir']
'C:\\Windows'
2 голосов
/ 05 марта 2010
if sys.argv[0] != '%windir%\\blabla.exe'

Что вы пытаетесь сделать здесь?

argv[0] - это, как правило, имя файла сценария, который вы вызываете. Казалось бы, вряд ли это будет blabla.exe, если только вы не используете какой-то инструмент для упаковки, чтобы скомпилировать себя в EXE. Если вы хотите посмотреть на первый аргумент, переданный скрипту, см. sys.argv[1].

Кроме того, когда вы используете %EnvironmentVariable% из консоли, оболочка Windows заменит имя переменной на ее содержимое. Поэтому, когда вы наберете myscript.py %windir%\blabla.exe, Windows заменит его на myscript.py C:\Windows\blabla.exe (или аналогичный) до того, как ваш скрипт увидит, и ваше сравнение не удастся, потому что имя переменной больше не существует.

Вы можете использовать os.path.expandvars, чтобы сделать такую ​​же замену своим собственным строкам (или просто прочитать os.environ самостоятельно). Вы также можете абсолютизировать путь, чтобы сравнить реальный эффективный путь, не беспокоясь об относительных путях:

blapath= os.path.expandvars(r'%WinDir%\blabla.exe')
if os.path.abspath(sys.argv[1])==os.path.abspath(blapath):
    ...

В этом случае вы также можете рассмотреть os.path.normcase использование обоих путей, чтобы учесть нечувствительность к регистру Windows.

0 голосов
/ 05 марта 2010

Вам нужно:

if sys.argv[0] != os.environ.get("windir")

Это должно сделать это для вас. Просто добавьте blabla.exe в конце этого.

0 голосов
/ 05 марта 2010

Используйте os.environ, чтобы получить значение переменной среды, и интерполяцию строки, чтобы поместить ее с остальной частью строки:

execfile = r'%s\blabla.exe' % (os.environ['windir'],)

if sys.argv[0] != execfile:
   ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...