2012-02-15 2 views
0

У меня есть этот питон скрипт, который сидит ввзять путь сценария в качестве аргумента питона

/some/folder/foo.py 

Так что, если я нахожусь в /some/folder и сделать

python foo.py 

скрипт работает великолепно. Теперь я хочу принять этот путь /some/folder в качестве аргумента, чтобы я мог запускать этот скрипт в другой папке.

что-то вроде, если я нахожусь в /a/different/folder и из этой папки я хочу, чтобы выполнить

foo.py 

Как я это сделать? Благодаря

+0

Я думаю, что это действительно вопрос оболочки, так как он будет одинаковым для запуска скриптов python, perl-скриптов или любой другой программы. Можешь подтвердить? – Useless

ответ

2

Рекомендация должна состоять в том, чтобы сделать обратное, принять параметр для запуска скрипта, если он не указан в текущем каталоге.

foo.py <path_to_run_script_on> 

Тогда все, что вам нужно сделать, это убедиться, что foo.py находится на вашем пути.

import sys 
import os 
if __name__=="__main__": 
if len(sys.argv) > 1: 
    p = sys.argv[1] 
else: 
    p = os.path.abspath(os.path.curdir) 

print p 
+0

Можете ли вы уточнить .. Я не думаю, что понял это полностью Спасибо – Fraz

2

Просто включите полный путь к сценарию:

python /some/folder/foo.py 

Если в вашем сценарии, у вас есть «относительный» путь, просто PREPEND /some/folder к каждому из путей.

+0

Привет .. Это сработало бы .. кроме .. файл сидит на сервере .. и на разных серверах этот путь может быть другим :( – Fraz

+0

вы всегда можете получить имя хоста, в котором вы работаете, используя 'hostname' . – asf107

1

Вы спрашиваете, как запустить это из оболочки? Вы ищете абсолютные пути:

/a/different/folder $ python /some/folder/foo.py 

или относительные пути:

/some/otherfolder $ python ../folder/foo.py 

Если вы хотите, чтобы получить абсолютное имя пути вашего сценария во время работы его:

import sys 
import os.path 

absolutePathToMe = os.path.abspath(sys.argv[0]) 
1
import os 

mypath = os.path.dirname(__file__) 

, который предоставит вам путь к скрипту, который в настоящее время выполняется

Смежные вопросы