Argumentos de pycharm y sys.argv

89

Estoy tratando de depurar un script que toma argumentos de línea de comando como entrada. Los argumentos son archivos de texto en el mismo directorio. El script obtiene los nombres de los archivos de la lista sys.argv. Mi problema es que no puedo iniciar el script con argumentos en pycharm.

Intenté ingresar argumentos en el campo "Parámetros de secuencia de comandos" en el menú "Ejecutar"> "Editar configuración" así:

-s'file1.txt', -s'file2.txt'

Pero no funcionó. ¿Cómo lanzo mi script con argumentos?

PD: estoy en Ubuntu

YKY
fuente

Respuestas:

107

En PyCharm, los parámetros se agregan Script Parameterscomo lo hizo, pero están encerrados entre comillas dobles "" y sin especificar los indicadores del intérprete como -s. Esas banderas se especifican en el Interpreter optionscuadro.

Contenido del cuadro de parámetros del script:

"file1.txt" "file2.txt"

Banderas de interpeter:

-s

O visualmente:

ingrese la descripción de la imagen aquí

Luego, con un simple archivo de prueba para evaluar:

if __name__ == "__main__":
    import sys
    print(sys.argv)

Obtenemos los parámetros que proporcionamos ( sys.argv[0]manteniendo el nombre del script, por supuesto):

['/Path/to/current/folder/test.py', 'file1.txt', 'file2.txt']
Dimitris Fasarakis Hilliard
fuente
Gracias funcionó. Además, resulta que debería haber utilizado "" comillas en lugar de ''.
YKY
3
Esto fue útil; pero para aclarar, mi script de Python toma dos nombres de archivo como parámetros, uno para -r y otro para -s (o ambos o uno o ninguno). Entonces, los parámetros de mi script se especificaron como [-p "prof_samples.txt" -r "resp_samples.txt"] sin opciones de intérprete.
harry
2
Creo que esta respuesta está desactualizada porque no hayscript parameters
tisaconundrum
@tisaconundrum después de verificar esto, ¿podría decirme qué versión de PyCharm está ejecutando? Acabo de descargar la última (PyCharm Community Edition 2017.2.3 Build # PC-172.3968.37, construida el 1 de septiembre de 2017) y todavía veo la Script parametersopción.
Dimitris Fasarakis Hilliard
Después de agregar los valores de los parámetros, haga clic en APLICAR o en el botón Aceptar sin ejecutar el código. Si guardo las configuraciones y ejecuto el código, aún los argumentos no se consideran en el código Pycharm Python
Praveen L
75

Por el bien de otros que se preguntan cómo llegar a esta ventana. Así es cómo:

Puede acceder a esto haciendo clic en Select Run/Debug Configurations(a la izquierda de ingrese la descripción de la imagen aquí) y yendo al archivo Edit Configurations. Un gif proporcionado para mayor claridad.

ingrese la descripción de la imagen aquí

tisaconundrum
fuente
1
El breve clip fue realmente útil, ¡gracias! Eso es lo que odio de las cosas de interfaz gráfica de usuario. Es como una búsqueda de huevos de Pascua, mientras que la línea de comando simplemente la escribe.
Shanemeister
Esto fue más útil que el mejor mejor votado. ¡Gracias!
Aakash Basu
12

En PyCharm Community o Professional Edition 2019.1+ :

  1. Desde la barra de menú, haga clic en Ejecutar -> Editar configuraciones
  2. Agregue sus argumentos en el cuadro de texto Parámetros (por ejemplo file2.txt file3.txt, o --myFlag myArg --anotherFlag mySecondArg)
  3. Haga clic en Aplicar
  4. Haga clic en Aceptar
Giorgos Myrianthous
fuente
11

Además de la respuesta de Jim (lo siento, no hay suficientes puntos de representante para hacer un comentario), solo quería señalar que los argumentos especificados en PyCharm no tienen caracteres especiales de escape, a diferencia de lo que haría en la línea de comandos. Entonces, mientras que en la línea de comando harías:

python mediadb.py  /media/paul/New\ Volume/Users/paul/Documents/spinmaster/\*.png

el parámetro PyCharm sería:

"/media/paul/New Volume/Users/paul/Documents/spinmaster/*.png"
Paul Miller
fuente
5

Tenga en cuenta que, por alguna razón desconocida, no es posible agregar argumentos de línea de comando en la versión de PyCharm Edu. Solo se puede realizar en las ediciones Professional y Community.

Jan Bodnar
fuente
3

El primer parámetro es el nombre del script que desea ejecutar. Desde el segundo parámetro en adelante, son los parámetros que desea pasar desde su línea de comando. A continuación se muestra un script de prueba:

from sys import argv

script, first, second = argv
print "Script is ",script
print "first is ",first
print "second is ",second

Y así es como pasa los parámetros de entrada: 'Ruta a su script', 'Primer parámetro', 'Segundo parámetro'

Digamos que la ruta a su script es /home/my_folder/test.py, la salida será como:

Script is /home/my_folder/test.py
first is First Parameter
second is Second Parameter

Espero que esto ayude, ya que me tomó algún tiempo descubrir que los parámetros de entrada están separados por comas.

Rumela Saraswati
fuente
2

Agregue lo siguiente en la parte superior de su archivo Python.

import sys

sys.argv = [
    __file__,
    'arg1',
    'arg2'
]

Ahora, puede simplemente hacer clic derecho en el script de Python.

Ahmed
fuente
1

Creo que está incluido incluso en la versión Edu. Simplemente haga clic con el botón derecho en el botón de flecha verde sólido (Ejecutar) y elija "Agregar parámetros".

Py Learner
fuente
1

Funciona en la versión edu para mí. No fue necesario para mí especificar una opción -s en las opciones del intérprete.

Parámetros de Pycharm para ejecutar con línea de comando

Awaa
fuente