每次使用Python调用时都生成始终唯一的ID

  • 本文关键字:唯一 ID Python 调用 python uid
  • 更新时间 :
  • 英文 :


创建python脚本的最佳方法是什么?通过调用它,它将始终生成一个新的UNIQUE ID(自动增量)?

您运行脚本,它会告诉您1,然后关闭脚本并再次打开,它会通知您2。

它的目的是创建一个脚本,该脚本将被跨使用,该ID将用于跟踪最新的更改等

附言:我不是说要做一个能做到这一点的函数。

import uuid
uniqueid = uuid.uuid1()

由于您没有提供任何代码,我也不会提供任何代码。

解决方案1:唯一ID

1)时间:创建函数,为您提供时间戳

2)ID:创建函数,生成带有随机数字和字母的长字符串

  • 这当然是"有风险的",因为您有可能生成已经存在的ID,但从统计的角度来看,它被称为"即使可能也不可能">

保存在文件或的某个位置

解决方案2:偏移-增量

1) 有一个0的文件。

2) 打开一个文件,读取行,转换为整数,增量为+1,写入一个文件。

注意:

你的头衔错了。前一刻你在谈论UNIQUE ID,下一刻你正在谈论偏移。唯一的ID和运行python脚本的计数是非常矛盾的想法

我假设你有一个脚本,每次执行它都会产生一些结果。然后你需要一个值,(1)区分一个结果和另一个结果,(2)显示哪个结果最后。是这样吗?如果是这样的话,我们有很多选择。在最简单的情况下(脚本总是在同一台机器上运行),我建议两个选项

将计数保存到文件

在这种情况下,你会有一个文件,并从中读取数字:

try:
with open('count.txt') as count_file:
content = count_file.read()
count = int(content)
except Exception:
count = 0

在完成脚本所做的任何操作后,您都会将读取的值写入文件,但会递增:

with open('count.txt', 'w') as count_file:
count_file.write(str(count + 1))

保存时间戳

然而,一个更简单的选项不是增加值,而是获取时间戳。您可以使用time.time(),它返回自Unix epoch:以来的秒数

>>> import time
>>> time.time()
1547479233.9383247

你永远都知道哪个结果比其他结果来得晚。然而,就我个人而言,我宁愿格式化当前时间,它更容易阅读和推理:

>>> from datetime import datetime
>>> datetime.now().strftime('%Y%m%d%H%M%S')
'20190114132407'

这些都是基本的想法,您可能需要注意角落案例和可能的失败(尤其是使用基于文件的解决方案)。也就是说,我认为这些是非常可行的第一步。

技术说明

你想要的是一个程序在两次或多次执行之间记住一条信息,我们有一个技术术语:信息应该是持久的。由于您要求具有自动递增功能,因此需要持久计数。然而,我怀疑,如果您使用时间戳选项,则不需要它。在这里做什么由你决定。

我也有同样的情况。我最终创建了一个CSV文件,以便映射变量名。

def itemId_generator(itemIdLocation):
# Importing value of ItemID from the csv file
df = pd.read_csv(itemIdLocation)
#return value which is current ItemID in the csv file
ItemId = df.loc[0, 'ItemId']
# If loop to set limit to maximum Item ID
if ItemId>= 10000:
df.loc[0, 'ItemId'] = 1
elif ItemId<10000:
# updating the column value/data
df.loc[0, 'ItemId'] = df.loc[0,'ItemId'] + 1
else:
print("Invalid value returned")
sys.exit()
# writing new ItemID into the file
df.to_csv(itemIdLocation, index=False)
# The function .item() converts numpy integer to a normal int
return str(ItemId.item())

如果有任何机会同时访问该文件,最好锁定该文件。如果文件已锁定,请继续尝试。

http://tilde.town/~cristo/file-locking-inpython.html

老答案:您可以将其作为环境变量存储在系统中。如果未设置,则初始化为1。否则将其递增1。

相关内容

  • 没有找到相关文章

最新更新