Eu tenho este código:
def hello():
return 'Hi :)'
Como eu executaria isso diretamente na linha de comando?
python
function
command-line
Steven
fonte
fonte
print "Hi :)"
vez dereturn 'Hi :)'
.Respostas:
Com o argumento
-c
(command) (assumindo que seu arquivo tenha o nomefoo.py
):Como alternativa, se você não se importa com a poluição do espaço para nome:
E o meio termo:
fonte
$python -c "import foo;foo.hello()"
print foo.hello()
porprint(foo.hello())
funcionou. Eu não tenho o conhecimento de python para explicar por que isso ocorre; portanto, se alguém puder explicar o que pode estar acontecendo, isso seria muito apreciado.Basta colocar em
hello()
algum lugar abaixo da função e ela será executada quando você fizerpython your_file.py
Para uma solução mais limpa, você pode usar o seguinte:
Dessa forma, a função somente será executada se você executar o arquivo, não quando importar o arquivo.
fonte
hello()
receber argumentos que devem ser fornecidos pela linha de comando?sys.argv
para o método Ou acessá-lo a partir do método Oláhello()
) e a executo a partir da linha de comando?python -c 'from myfile import hello; hello()'
ondemyfile
deve ser substituído pelo nome de base do seu script Python. (Por exemplo,myfile.py
torna-semyfile
).No entanto, se
hello()
é o seu ponto de entrada principal "permanente" no seu script Python, a maneira usual de fazer isso é a seguinte:Isso permite que você execute o script simplesmente executando
python myfile.py
oupython -m myfile
.Alguma explicação aqui:
__name__
é uma variável Python especial que contém o nome do módulo que está sendo executado atualmente, exceto quando o módulo é iniciado a partir da linha de comando; nesse caso, ele se torna"__main__"
.fonte
python -m foo -c 'foo.bar()'
epython -c 'import foo; foo.bar()'
? Recebo um comportamento diferente, onde parece que o argumento -c é ignorado no primeiro caso.Eu escrevi um pequeno script Python rápido que pode ser chamado a partir de uma linha de comando do bash. Leva o nome do módulo, classe e método que você deseja chamar e os parâmetros que deseja passar. Eu chamo PyRun e deixei a extensão .py e a tornei executável com chmod + x PyRun para que eu possa chamá-la rapidamente da seguinte maneira:
Salve isso em um arquivo chamado PyRun
Aqui está um exemplo de módulo para mostrar como funciona. Isso é salvo em um arquivo chamado PyTest.py:
Tente executar estes exemplos:
Observe o último exemplo de escape dos parênteses para passar uma tupla como o único parâmetro para o segundo método.
Se você passar poucos parâmetros para o que o método precisa, você receberá um erro. Se você passar muitos, ignora os extras. O módulo deve estar na pasta de trabalho atual, pois o PyRun pode estar em qualquer lugar do seu caminho.
fonte
adicione esse trecho ao final do seu script
Agora você pode chamar sua função executando
Isso funciona porque você está passando o argumento da linha de comando (uma sequência do nome da função) para
locals
um dicionário com uma tabela de símbolos local atual. Os parênteses no final farão com que a função seja chamada.update: se você deseja que a função aceite um parâmetro na linha de comando, pode passar o
sys.argv[2]
seguinte:Dessa forma, a execução
python myscript.py myfunction "hello"
será geradahello
.fonte
myfunction(12)
Vamos tornar isso um pouco mais fácil para nós mesmos e apenas usar um módulo ...
Tentar:
pip install compago
Então escreva:
Então use assim:
Nota: Há um bug no Python 3 no momento, mas funciona muito bem com o Python 2.
Edit: Uma opção ainda melhor, na minha opinião, é o módulo disparado pelo Google, que facilita também a passagem de argumentos de função. Está instalado com
pip install fire
. No GitHub:Aqui está um exemplo simples.
Em seguida, na linha de comando, você pode executar:
fonte
python -m fire file_name method_name
. Ele também possui um argparser embutido.Curiosamente, se o objetivo era imprimir no console da linha de comandos ou executar alguma outra operação python minuciosa, você pode canalizar a entrada no interpretador python da seguinte forma:
bem como arquivos de tubulação ..
* Observe que a extensão não precisa ser .py para que o segundo funcione. ** Observe também que, para o bash, você pode precisar escapar dos caracteres
fonte
echo import foo;foo.hello() | python
echo 'print("hi:)")' | python
Se você instalar o pacote runp,
pip install runp
é necessário executar:runp myfile.py hello
Você pode encontrar o repositório em: https://github.com/vascop/runp
fonte
Eu tinha o requisito de usar vários utilitários python (intervalo, string etc.) na linha de comando e havia escrito a ferramenta pyfunc especificamente para isso. Você pode usá-lo para enriquecer sua experiência de uso da linha de comando:
fonte
É sempre uma opção para inserir python na linha de comando com o comando python
então importe seu arquivo, então importe exemplo_arquivo
em seguida, execute o comando com example_file.hello ()
Isso evita a estranha função de cópia .pyc que aparece toda vez que você executa python -c etc.
Talvez não seja tão conveniente quanto um comando único, mas uma boa solução rápida para enviar um arquivo de texto a partir da linha de comando, e permite que você use python para chamar e executar seu arquivo.
fonte
Algo assim: call_from_terminal.py
Isso funciona no bash.
fonte
Abaixo está o arquivo Odd_Even_function.py que possui a definição da função.
Agora, para chamar o mesmo no prompt de comando abaixo, estão as opções trabalhadas para mim.
Opções 1 Caminho completo da exe \ python.exe -c "import Odd_Even_function; Odd_Even_function.OE (100)"
Opção 2 Caminho completo do exe \ python.exe -c "de Odd_Even_function import OE; OE (100)"
Obrigado.
fonte
Esta função não pode ser executada na linha de comando, pois retorna um valor que não será tratado. Você pode remover a devolução e usar a impressão
fonte
Use a ferramenta python-c ( pip install python-c ) e, em seguida, basta escrever:
ou caso você não tenha conflitos de nome de função nos arquivos python:
fonte
Primeiro, você deve chamar a função como eles disseram ou o comando não exibirá nada na saída. Depois disso, salve o arquivo e copie o caminho do arquivo clicando com o botão direito do mouse na pasta do arquivo e clique em "copiar arquivo". vá para o terminal e escreva: - cd "o caminho do arquivo" - python "nome do arquivo, por exemplo (main.py)", depois disso ele exibirá a saída do seu código.
fonte
Facilite sua vida, instale o Spyder. Abra seu arquivo e execute-o (clique na seta verde). Posteriormente, seu
hello()
método é definido e conhecido pelo IPython Console, para que você possa chamá-lo no console.fonte