创建python脚本的最佳方法是什么,通过调用它,它将始终生成一个新的UNIQUE ID(自动递增)
您运行脚本,它将告诉您1,然后关闭脚本并再次打开,并告诉您2。
目的是创建一个脚本,该脚本将在整个脚本中使用,并且此ID将用于跟踪最新更改等。
P.S。我不是在说要做一个能做到的函数。
答案 0 :(得分:1)
import uuid
uniqueid = uuid.uuid1()
答案 1 :(得分:0)
我假设您有一个脚本,每次执行该脚本都会产生一些结果。然后,您需要一个值,该值(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
您将始终知道哪个结果比其他结果晚。但是,就我个人而言,我更愿意format the current time,因为它更易于阅读和推理:
>>> from datetime import datetime
>>> datetime.now().strftime('%Y%m%d%H%M%S')
'20190114132407'
这些是基本思想,您可能需要注意一些极端情况和可能的失败(尤其是基于文件的解决方案)。就是说,我想这些都是可行的第一步。
您要在程序中记住两个或多个执行之间的一条信息,对此我们有一个专门的术语:信息应该是持久。由于您要求使用自动递增功能,因此需要持续计数。但是,我怀疑如果使用timestamp选项,则不需要。由您决定在这里做什么。
答案 2 :(得分:0)
由于您未提供任何代码,因此我也将不提供任何代码。
解决方案1:唯一ID
1)时间:创建功能来为您提供时间戳
2) ID :创建函数以生成带有随机数字和字母的长字符串
保存在文件中或其他地方
解决方案2:抵消-增量
1)文件中包含0。
2)打开文件,读取行,转换为整数,递增为+1,写入文件。
注意:
您的标题有误。一会儿谈论UNIQUE ID,一会儿谈论偏移。唯一的ID和正在运行的python脚本计数非常矛盾的想法
答案 3 :(得分:0)
我遇到了同样的情况。我最终创建了一个 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())
答案 4 :(得分:-1)
如果有可能同时访问文件,则最好锁定文件。继续尝试文件是否被锁定。
http://tilde.town/~cristo/file-locking-in-python.html
旧答案: 您可以将其存储为系统上的环境变量。如果未设置,则初始化为1。否则将其递增1。