module de sous-processus: utilisation de la méthode call avec des objets tempfile

StackOverflow https://stackoverflow.com/questions/1049648

  •  20-08-2019
  •  | 
  •  

Question

J'ai créé des fichiers nommés temporaires avec la méthode NamedTemporaryFile des bibliothèques de fichiers temp. Je leur ai écrit les flushs, et je ne les ai pas fermés (sinon ils pourraient partir)

J'essaie d'utiliser le module subprocess pour appeler des commandes shell à l'aide de ces fichiers générés.

subprocess.call('cat %s' % f.name) échoue toujours en indiquant que le fichier temporaire nommé n'existe pas.

os.path.exists(f.name) renvoie toujours la valeur true. Je peux exécuter la commande cat sur le fichier directement à partir du shell.

Existe-t-il une raison quelconque pour que le module <=> ne fonctionne pas avec les fichiers temporaires?

Y a-t-il un moyen de le faire fonctionner?

Merci d'avance.

Était-ce utile?

La solution

Utilisez-vous l'option shell = True pour le sous-processus?

Autres conseils

Pourquoi ne faites-vous pas votre NamedTemporaryFile s avec le paramètre facultatif delete=False? De cette façon, vous pouvez les fermer en toute sécurité en sachant qu'elles ne disparaîtront pas, les utiliser normalement par la suite et les dissocier explicitement lorsque vous avez terminé. De cette façon, tout fonctionnera également sur plusieurs plates-formes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top