2014-10-13 5 views
0

Я новичок в python, и здесь проблема касается меня все время. Например, очень простой код:выполнить код python в терминале

a = int (input (' please a number ')) 
if a <0: 
    a = 0 
    print ('change to zero') 
elif a == 0: 
    print ('zero') 
elif a == 1: 
    print ('one') 
else: 
    print ('more') 

Этот код работает хорошо в терминале при вводе в python testif.py (имя файла). Но когда я пытаюсь напечатать ./testif.py Он показывает:

-bash: ./testif.py: Permission denied 

Это также происходит в убунту, я пытался добавить

#!/usr/bin/python 

на первой линии, он по-прежнему не работает

Так пожалуйста, помогите мне с моей проблемой, все время боритесь.

+0

Вы пытались добавить его в качестве псевдонима в файле bashrc? Я бы сделал это, чтобы он запускался как ./scriptName – ryekayo

+0

Вы сделали исполняемый файл сценария? ('chmod + x testif.py') –

+0

это работает, но мне нужно делать это каждый раз, когда я хочу напечатать ./. Есть ли способ, которым я могу разобраться в разовой ситуации? –

ответ

1

Если вы хотите, чтобы иметь возможность запускать сценарий из командной строки (./scriptname.py) без необходимости вводить python3 scriptname.py, то вам нужно сделать файл исполняемым с помощью chmod +x filename.py и добавьте хижину (#!/usr/bin/env python3) в качестве самой первой линии сценария. Это нужно сделать для каждого нового скрипта, который вы пишете, но как только это делается для определенного файла, его снова не нужно делать для того же самого файла. В качестве альтернативы, конечно, вы можете просто привыкнуть писать python3 scriptname.py.

Просто чтобы быть ясно (из обсуждения в комментариях) - в то время как на стандартных ванильных системах Ubuntu /usr/bin/python должны указывать на Python 2, просто работает python из командной строки может вызвать либо Python 2 или Python 3, в зависимости от того, как среда не настроена (не-системный Python установлен в /usr/local/bin, домашний каталог или где-либо еще на PATH до /usr/bin, запускает virtualenv, настраиваемые символические ссылки и т. д.). Чтобы быть абсолютно безопасным, следуйте advice J.F. Sebastian: если ваша программа будет работать без проблем на обеих языковых версиях, используйте #!/usr/bin/env python. Если это Py2-специфический, используйте python2, и если он имеет значение Py3, используйте python3.

+0

Есть ли разница между python3 scriptname.py и ./scriptname? Если я пишу только python scriptname.py, значит ли это, что он использует python 2.7.5, а не python 3.4.1? –

+0

@XiaomingWu вам нужно указать полное имя файла, включая '.py', если он есть. Если вы добавите python 3 shebang и сделаете исполняемый файл, то './Scriptname.py' будет таким же, как' python3 scriptname.py' (при условии, что вы используете Python 3). 'python scriptname.py' запустит его с помощью Python 2,' python3 scriptname.py' запустит его с Python 3. Учитывая, что вы используете 'input()' в приведенном выше примере кода, вам нужно запустить его с Python 3, чтобы получить желаемые результаты, так как 'input()' в Py2 означает нечто совершенно другое - используйте 'raw_input()' в Py2, 'input()' в Py3. – MattDMo

+0

'python' может также ссылаться на Python 3, например, внутри активного virtualenv. Хотя по умолчанию 'python' для большинства (POSIX) систем относится к интерпретатору Python 2. См. [Команда «python» в Unix-подобных системах] (http://legacy.python.org/dev/peps/pep-0394/), короткая версия: используйте 'python' shebang, если ваш скрипт совместим с исходным кодом с оба Python 2 и 3, в противном случае явно используйте python2 или python3. – jfs

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