es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

pasar una variable (nombre de archivo) a subprocess.run()

Estoy ejecutando subprocess.run() en un bucle for para que en cada iteración se pase un nombre de archivo a esta función:

myList = ['file1', 'file2']
for item in myList:
    subprocess.run(['foo.py', 'argBar', 'argBaz', item], shell=True, check=True)

Sin embargo, me doy cuenta de que el item no se está pasando a foo.py como argumento.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Hay un par de problemas potenciales con el código proporcionado que podrían estar causando que el ítem no se pase como argumento a foo.py.

    En primer lugar, establecer shell=True puede causar problemas al pasar argumentos correctamente, por lo que esto debería eliminarse a menos que sea necesario por una razón específica.

    En segundo lugar, los argumentos pasados a subprocess.run deben ser proporcionados como una lista, y cada argumento debe ser un elemento separado en la lista. En el código proporcionado, el nombre de archivo se está pasando como una cadena, lo cual puede no ser procesado correctamente por el subprocess.

    Para solucionar estos problemas, el código puede ser actualizado de la siguiente manera:

    myList = ['file1', 'file2']
    for item in myList:
        subprocess.run(['python', 'foo.py', 'argBar', 'argBaz', item], check=True)
    

    Este código pasará cada nombre de archivo como un argumento separado al subprocess, asegurando que sea procesado correctamente por foo.py.

Comments are closed.