2015-01-19 2 views
2

У меня проблема с системным вызовом python. Я создал свой питон, путь и pathext.Командная строка Python (слишком мало аргументов)

Эти команды работают на моем компьютере

run.py 
python runWithParamater.py parameterExample.txt 

, но если я бегу:

runWithParamater.py parameterExample.txt 

интерпретатор вернется "ошибка: слишком мало аргументов".

Может ли кто-нибудь сказать мне, что мне не хватает?

+2

как будет выполняться runWithParamater.py'? вы запустили 'chmod + x' в файле, чтобы сделать его исполняемым? –

+2

Файл начинается с строки '#!/Usr/bin/env python' или аналогичного? –

+0

Вы должны сделать исполняемый файл с 'chmod + x' первым – rhodysurf

ответ

3

Ваш runWithParameter.py, вероятно, ожидает 3 аргумента, включая python.

+0

Я смущен. Например, если я запустил «python runWithParamater.py parameterExample.txt» -> 2 аргумента правильно? Если я запустил: "runWithParamater.py parameterExample.txt" -> 2 аргумента также или 1? Извините, что я нахожусь снаружи, не могу попробовать прямо сейчас. –

+0

'python runWithParamater.py параметрExample.txt' - три аргумента, параметр runWithParamater.pyExample.txt - два. –

+0

, поэтому аргумент уменьшается на 1. Возможно ли решить это без изменения кода/проверки? –

1

Ваша программа runWithParameter.py нуждается в #!/usr/bin/env python в верхней части экрана. Затем в вашей оболочке введите chmod +x runWithParameter.py. Оттуда вы можете просто ввести runWithParameter.py, и он будет запущен.

Пример:

foo.py:

#!/usr/bin/env python 
print 'Hello World' 

И в зависимости от ваших $PATH, вы можете ввести foo.py, чтобы запустить его. В противном случае, вам придется поставить перед ним ./

bash-3.2$ chmod +x foo.py 
bash-3.2$ ./foo.py 
Hello World 
bash-3.2$ 

Или, если вы собираетесь работать эту функцию локально, вы можете определить функцию:

bash-3.2$ function foo.py(){ 
> ./foo.py 
> } 
bash-3.2$ foo.py 
Hello World 
bash-3.2$ 
+0

Мой плохой, означало 'chmod + x'. Опечатка. –

+0

@PadraicCunningham nope. –

+0

@ A.J. Зависит от вашей PATH. Обычно ставить ".«в вашей PATH считается плохой идеей по соображениям безопасности, но люди делают это .... –

0

Я пропустил # C:/Anaconda/python.exe (работает в Windows). Добавив его, мои аргументы подсчитаны правильно (без уменьшения одного, если я не использую python.exe по моей команде)

Есть ли возможное решение без изменения кода? Я получил эти скрипты из библиотеки, а по умолчанию: «#!/Usr/bin/env python». Это довольно громоздкая вещь, чтобы добавить эту строку во все сценарии.

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