【问题标题】:How do I convert a Python UUID into a string?如何将 Python UUID 转换为字符串?
【发布时间】:2016-05-05 11:20:13
【问题描述】:

我需要 能够将 UUID 分配给用户并将其记录在 .txt 文件中。这就是我所拥有的:

import uuid

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

我试过了:

f.write(uuid.uuid1())

但什么也没出现,可能是逻辑错误,但我不知道。

【问题讨论】:

  • 您有机会查看uuid 文档吗?
  • @IgnacioVazquez-Abrams 我对 python 很陌生,很抱歉,但我不太清楚你的意思。
  • 您可以通过在 str(...) 周围将 uuid 更改为字符串,如果这确实是您的要求。
  • 因为输入是通过 main 获得的..被认为是变量...尝试在重新输入时使用引号...并且 f=open("file.txt") 不与点
  • uuid.uuid4().hex 怎么样?它返回一个 32 个字符的字符串。

标签: python string uuid


【解决方案1】:

你可以试试这个!

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

【讨论】:

  • 谁反对这个?问题是“如何将 UUID 更改为字符串?”这很好地回答了这个问题。它不会返回任何内容,因为它展示了如何将 UUID 转换为字符串表示形式。投票 +1
  • str(UUID) 是否总是返回一个由字母数字加破折号组成的字符串?我在UUID.__str__() 上找不到文档。或者,我是否需要使用 UUID.hex()UUID.urn() 之类的东西来确保生成的字符串中没有不可打印的字符?
  • @AdamMlodzinski 是的,来自官方 python 文档docs.python.org/3/library/uuid.html#module-uuid 并查看 str 方法 github.com/python/cpython/blob/master/Lib/uuid.py#L279 的源代码
【解决方案2】:

您也可以这样做。删除破折号作为奖励。 link to docs.

import uuid
my_id = uuid.uuid4().hex

ffba27447d8e4285b7bdb4a6ec76db5c

更新:修整的 UUID(没有破折号)在功能上与完整的 UUID (discussion) 相同。完整 UUID 中的破折号始终位于同一位置 (article)。

【讨论】:

  • 谢谢先生,您有文档链接吗?
  • 这仍然是独一无二的吗?如果我们删除破折号?
  • 我已经编辑了我的答案,以使指向文档的链接更加明显。
  • 更新了我关于删除破折号的影响的答案。
【解决方案3】:

我想出了一个不同的解决方案,它在 Python 3.7 中对我很有效。

import uuid

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

urnURN 形式的 UUID,在 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)
    

    这将在您完成后自动关闭您的文件,从而确保将其写入磁盘。

    【讨论】:

    • 我试过了,它一直返回:TypeError: write() argument must be str, not UUID#
    • @AlphinPhilip 更新了我的答案 - 你可以做任何一个。后者假定您正在运行 python3.x+ 或已运行 from __future__ import print_function
    【解决方案5】:

    [update] 我添加了 str 函数以将其写入字符串并关闭文件以确保它立即执行,然后我不得不终止程序以便写入内容

     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()
    

    我想这对我有用

    【讨论】:

    • 我试过了,它一直返回:TypeError: write() argument must be str, not UUID
    • @AlphinPhilip 我希望你到时候修复它
    • 不确定这对您是否重要,但在我看来,您正在打印的 uuid1 与您正在写入文件的 uuid1 不同,因为uuid.uuid1() != uuid.uuid1()
    • @Dennis,我正在提供替代方案...他可以打印它或在字符串变量中生成它并编写它...或生成它并直接编写它
    猜你喜欢
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 2018-05-24
    • 1970-01-01
    相关资源
    最近更新 更多