web-dev-qa-db-fra.com

Comment changer un UUID en une chaîne?

Je dois pouvoir attribuer un UUID à un utilisateur et le documenter dans un fichier .txt. C'est tout ce que j'ai:

import uuid
def main():
    a=input("What's your name?")
    print (uuid.uuid1())
    f.open(#file.txt)
main()

J'ai essayé:

f.write(uuid.uuid1())

mais rien ne vient, peut être une erreur logique mais je ne sais pas.

22
Alphin Philip

vous pouvez l'essayer!

 a = uuid.uuid1()
 str(a)
 --> '448096f0-12b4-11e6-88f1-180373e5e84a'
54
sumit

J'ai trouvé une solution différente qui a fonctionné pour moi comme prévu avec Python 3.7 .

import uuid

uid_str = uuid.uuid4().urn
your_id = uid_str[9:]

urn est l'UUID en tant qu'URN comme spécifié dans RFC 4122 .

2
abdullahselek

[mise à jour] j'ai ajouté la fonction str pour l'écrire en tant que chaîne et fermer le fichier pour m'assurer qu'il le fait immédiatement, avant de devoir terminer le programme pour que le contenu soit écrit

 import uuid
 def main():
     a=input("What's your name?")
     print(uuid.uuid1())
 main()
 f=open("file.txt","w")
 f.write(str(uuid.uuid1()))
 f.close()

Je suppose que cela fonctionne pour moi

2
Eliethesaiyan

C'est probablement parce que vous n'êtes pas en fait fermant votre fichier. Cela peut provoquer des problèmes. Vous voulez utiliser le bloc gestionnaire de contexte/with lorsque vous traitez des fichiers, sauf si vous avez vraiment une raison de ne pas le faire.

with open('file.txt', 'w') as f:
    # Do either this
    f.write(str(uuid.uuid1()))
    # **OR** this.
    # You can leave out the `end=''` if you want.
    # That was just included so that the two of these
    # commands do the same thing.
    print(uuid.uuid1(), end='', file=f)

Cela fermera automatiquement votre fichier lorsque vous aurez terminé, ce qui garantira qu'il est écrit sur le disque.

1
Wayne Werner