Tengo este código:
def hello():
return 'Hi :)'
¿Cómo ejecutaría esto directamente desde la línea de comando?
python
function
command-line
Steven
fuente
fuente
print "Hi :)"
lugar dereturn 'Hi :)'
.Respuestas:
Con el argumento
-c
(comando) (suponiendo que se nombre su archivofoo.py
):Alternativamente, si no le importa la contaminación del espacio de nombres:
Y el término medio:
fuente
$python -c "import foo;foo.hello()"
print foo.hello()
conprint(foo.hello())
lo hizo. No tengo el conocimiento de Python para explicar por qué esto es así, así que si alguien más pudiera explicar lo que está sucediendo, eso sería muy apreciadoSimplemente coloque en
hello()
algún lugar debajo de la función y se ejecutará cuando lo hagapython your_file.py
Para una solución más ordenada puede usar esto:
De esa forma, la función solo se ejecutará si ejecuta el archivo, no cuando importe el archivo.
fuente
hello()
pasa si toma argumentos que deberían ser proporcionados por la línea de comando?sys.argv
al método. O acceda desde el método hellohello()
) y la ejecuto desde la línea de comandos?python -c 'from myfile import hello; hello()'
dondemyfile
debe ser reemplazado con el nombre base de su script Python. (Por ejemplo, semyfile.py
conviertemyfile
).Sin embargo, si
hello()
es su punto de entrada principal "permanente" en su secuencia de comandos de Python, la forma habitual de hacerlo es la siguiente:Esto le permite ejecutar el script simplemente ejecutando
python myfile.py
opython -m myfile
.Alguna explicación aquí:
__name__
es una variable especial de Python que contiene el nombre del módulo que se está ejecutando actualmente, excepto cuando el módulo se inicia desde la línea de comandos, en cuyo caso se convierte"__main__"
.fuente
python -m foo -c 'foo.bar()'
ypython -c 'import foo; foo.bar()'
? Obtengo un comportamiento diferente donde parece que el argumento -c se ignora en el primer caso.Escribí un pequeño script Python rápido que se puede llamar desde una línea de comando bash. Toma el nombre del módulo, clase y método al que desea llamar y los parámetros que desea pasar. Lo llamé PyRun y dejé la extensión .py y lo hice ejecutable con chmod + x PyRun para que pueda llamarlo rápidamente de la siguiente manera:
Guarda esto en un archivo llamado PyRun
Aquí hay un módulo de muestra para mostrar cómo funciona. Esto se guarda en un archivo llamado PyTest.py:
Intente ejecutar estos ejemplos:
Tenga en cuenta el último ejemplo de escapar de los paréntesis para pasar una tupla como el único parámetro para el segundo método.
Si pasa muy pocos parámetros para lo que necesita el método, obtendrá un error. Si pasa demasiados, ignora los extras. El módulo debe estar en la carpeta de trabajo actual, poner PyRun puede estar en cualquier parte de su ruta.
fuente
agregue este fragmento al final de su secuencia de comandos
Ahora puede llamar a su función ejecutando
Esto funciona porque está pasando el argumento de la línea de comando (una cadena del nombre de la función) en
locals
un diccionario con una tabla de símbolos local actual. Las paréntesis al final harán que se llame a la función.actualización: si desea que la función acepte un parámetro de la línea de comando, puede pasar de
sys.argv[2]
esta manera:De esta manera, se ejecutará la
python myscript.py myfunction "hello"
salidahello
.fuente
myfunction(12)
Hagamos esto un poco más fácil para nosotros y simplemente usemos un módulo ...
Tratar:
pip install compago
Luego escribir:
Luego use así:
Nota: Hay un error en Python 3 en este momento, pero funciona muy bien con Python 2.
Editar: una opción aún mejor, en mi opinión, es el módulo de disparo de Google que facilita también pasar argumentos de función. Se instala con
pip install fire
. De su GitHub:Aquí hay un ejemplo simple.
Luego, desde la línea de comandos, puede ejecutar:
fuente
python -m fire file_name method_name
. También tiene un argparser incorporado.Curiosamente, si el objetivo era imprimir en la consola de línea de comandos o realizar alguna otra operación de Python minuciosa, puede canalizar la entrada al intérprete de Python de la siguiente manera:
así como archivos de tubería ...
* Tenga en cuenta que la extensión no tiene que ser .py para que el segundo funcione. ** También tenga en cuenta que para bash puede que tenga que escapar de los personajes
fuente
echo import foo;foo.hello() | python
echo 'print("hi:)")' | python
Si instala el paquete runp con
pip install runp
una cuestión de ejecución:runp myfile.py hello
Puede encontrar el repositorio en: https://github.com/vascop/runp
fuente
Tenía el requisito de usar varias utilidades de python (rango, cadena, etc.) en la línea de comando y había escrito la herramienta pyfunc específicamente para eso. Puede usarlo para enriquecer su experiencia de uso de la línea de comandos:
fuente
Siempre es una opción ingresar python en la línea de comando con el comando python
luego importe su archivo para importar ejemplo_archivo
luego ejecute el comando con ejemplo_archivo.hello ()
Esto evita la extraña función de copia .pyc que surge cada vez que ejecuta python -c, etc.
Tal vez no sea tan conveniente como un solo comando, pero es una buena solución rápida para enviar un mensaje de texto a un archivo desde la línea de comandos, y le permite usar python para llamar y ejecutar su archivo.
fuente
Algo como esto: call_from_terminal.py
Esto funciona en bash.
fuente
A continuación se muestra el archivo Odd_Even_function.py que tiene la definición de la función.
Ahora, para llamar lo mismo desde el símbolo del sistema a continuación, las opciones me funcionaron.
Opciones 1 Ruta completa de exe \ python.exe -c "import Odd_Even_function; Odd_Even_function.OE (100)"
Opción 2 Ruta completa de exe \ python.exe -c "desde Odd_Even_function import OE; OE (100)"
Gracias.
fuente
Esta función no se puede ejecutar desde la línea de comando, ya que devuelve un valor que quedará sin control. Puede eliminar la devolución y utilizar imprimir en su lugar
fuente
Use la herramienta python-c ( pip install python-c ) y luego simplemente escriba:
o en caso de que no haya conflictos de nombres de funciones en sus archivos de Python:
fuente
Primero debe llamar a la función como le dijeron o la función no mostrará nada en la salida, luego guarde el archivo y copie la ruta del archivo haciendo clic derecho en la carpeta del archivo y haga clic en "copiar archivo" vaya a la terminal y escriba: - cd "la ruta del archivo" - nombre de python "del archivo, por ejemplo (main.py)" después de eso mostrará la salida de su código.
fuente
Haz tu vida más fácil, instala Spyder. Abra su archivo y ejecútelo (haga clic en la flecha verde). Posteriormente, su
hello()
método está definido y es conocido por la consola IPython, por lo que puede llamarlo desde la consola.fuente