Como executar uma definição python dentro de um arquivo .py do shell?

4

Minha função fica dentro de um arquivo .py com o mesmo nome da função:

emp@emp:~$ python ~/Dropbox/emp/Python/stromkosten_pro_jahr.pyempedokles@empedokles:~$ stromkosten_pro_jahr(20,3)
bash: Syntaxfehler beim unerwarteten Wort »20,3«
emp@emp:~$ 

Onde está o erro?

    
por empedokles 07.05.2014 / 15:23

3 respostas

3

Você precisa cd no diretório onde seu arquivo python está localizado e, em seguida, invocar o shell interativo do python para poder chamar e executar funções interativamente.

# cd to the directory
$ cd ~/Dropbox/emp/Python/

# invoke the python interactive shell
$ python     # use 'python3' to invoke the Python3 shell

O shell interativo do Python seria parecido com:

Python 2.7.6 (default, Mar 22 2014, 22:59:38) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Aqui você pode importar o módulo (seu arquivo * .py) e execute as funções escritas aqui:

>>> from stromkosten_pro_jahr import stromkosten_pro_jahr
>>> stromkosten_pro_jahr(20,3)
[The output of function would be shown right here]

Para mais informações, sugiro que você leia o O tutorial em Python .

    
por Aditya 07.05.2014 / 15:33
2

Como encontrei nesta resposta , você pode executar a função python diretamente de bash como:

$ python -c 'from a import stromkosten_pro_jahr; stromkosten_pro_jahr(20,3)'

Onde a é o nome do arquivo / módulo ( a.py ).

Mas o importante é estar no mesmo diretório do seu arquivo.

    
por dannydedog 25.07.2017 / 19:40
1

Você não pode chamar funções Python diretamente do shell Bash. Você está recebendo este erro em particular porque bash está analisando seus argumentos (20,3) assim:

$ echo (20,3)
bash: syntax error near unexpected token '20,3'

Para passar os colchetes como uma string, você precisa escapar deles:

$ echo \(20,3\) '(1,2)'
(20,3) (1,2)

Mas isso ainda não será executado magicamente como código Python - você precisará analisar os argumentos da linha de comando em seu programa Python (salve como x.py):

import sys

def fn(a,b):
  print a+b

eval(sys.argv[1])

Então:

$ python x.py 'fn(0,13)'
13
    
por bain 07.05.2014 / 15:43