Как изменить UUID на строку?

Мне нужно уметь назначать UUID пользователю и документировать его в файле.txt. Это все, что у меня есть:

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

Я пытался:

f.write(uuid.uuid1())

но ничего не возникает, может быть логической ошибкой, но я не знаю.

Ответ 1

вы можете попробовать это!

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

Ответ 2

[update] я добавил функцию str, чтобы записать ее как строку и закрыть файл, чтобы убедиться, что он делает это немедленно, прежде чем я должен был завершить программу, чтобы содержимое было написано

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

Думаю, это работает для меня

Ответ 3

Я предложил другое решение, которое работало для меня, как и ожидалось, с Python 3.7.

import uuid

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

urn - это UUID в качестве URN, как указано в RFC 4122.

Ответ 4

Вероятно, это потому, что вы фактически не закрываете свой файл. Это может вызвать проблемы. Вы хотите использовать диспетчер контекста /with блоком при работе с файлами, если у вас действительно нет причин не делать этого.

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)

Это автоматически закроет ваш файл, когда вы закончите, что обеспечит его запись на диск.