2016-06-13 1 views
1

J'ai besoin d'un nom de fichier aléatoire pour passer à une commande exécutée avec sous-processus.Générer un nom de fichier aléatoire (juste le nom) en Python

mktemp a été déprépé dans Python 2.3 et la documentation nous dit d'utiliser mkstemp à la place.

Cependant, comme tout ce que je veux est le nom que je finis par faire ceci:

fd, filename = tempfile.mkstemp(prefix='source', suffix='.wav') 
os.close(fd) 

qui se sent très inutile. Je pense que je pourrais juste continuer à fermer le descripteur de fichier ou tout simplement ignorer l'avertissement de désapprobation et utiliser mktemp, mais je n'aime pas utiliser les fonctions obsolètes car elles ont tendance à être supprimées dans le futur - même si elles ont survécu . Ni l'un ni l'autre ne se sent comme une bonne solution.

Toutes les idées qui n'aboutissent pas à la réécriture mktemp?

Répondre

0

Vous avez un appel de fonction NamedTemporaryFile dans le paquetage tempfile dans python 3. Cette fonction crée un fichier temporaire avec un attribut name. dans les fenêtres il a une certaine limite décrire dans la documentation officielle de python https://docs.python.org/3.4/library/tempfile.html

Je devrais avoir un commentaire parce que je ne sais pas si cela aide vraiment. Dans votre titre, vous semblez vouloir générer uniquement un nom, cette méthode génère un fichier temporaire. mais dans votre exemple, vous créez un fichier temporaire, donc ... J'espère que cela aidera

+0

'NamedTemporaryFile' ouvre en effet le fichier qui est exactement ce que je veux éviter. L'utiliser remplace simplement 'os.close (fd)' par 'file.close()' – Raniz