módulo de subproceso: uso del método de llamada con objetos de archivos temporales
-
20-08-2019 - |
Pregunta
He creado archivos temporales con nombre, con el método NamedTemporaryFile de bibliotecas temporales. Les escribí para limpiar los tampones, y no los cerré (o podrían desaparecer)
Estoy tratando de usar el módulo subprocess
para llamar a algunos comandos de shell utilizando estos archivos generados.
subprocess.call('cat %s' % f.name)
siempre falla diciendo que el archivo temporal nombrado no existe.
os.path.exists(f.name)
siempre devuelve verdadero.
Puedo ejecutar el comando cat en el archivo directamente desde el shell.
¿Hay alguna razón por la cual el módulo <=> no funcionará con archivos temporales?
¿Hay alguna forma de hacerlo funcionar?
Gracias de antemano.
Solución
¿Está utilizando la opción shell = True para el subproceso?
Otros consejos
¿Por qué no crea sus NamedTemporaryFile
s con el parámetro opcional delete=False
? De esa manera, puede cerrarlos de manera segura sabiendo que no desaparecerán, usarlos normalmente después y desvincularlos explícitamente cuando haya terminado. De esta manera, todo funcionará multiplataforma también.