我有一个python函数,我正在尝试将增量id保存到一个文件中。你知道吗
def generate_id():
with open(".id.txt", "w+") as id:
person_id = id.read()
print('1:', person_id)
if person_id == '':
person_id = 1
id.write(str(person_id))
print("if", person_id)
return person_id
else:
person_id = int(person_id)
person_id += 1
id.truncate()
id.write(str(person_id))
print("else", person_id)
return person_id
问题是,这是我每次通话的输出:
In [36]: generate_id()
1:
if 1
Out[36]: 1
In [37]: generate_id()
1:
if 1
Out[37]: 1
In [38]: generate_id()
1:
if 1
Out[38]: 1
有什么办法让每次通话的价值增加吗?你知道吗
这是我用来解决问题的代码。谢谢你的帮助!你知道吗
def generate_id():
with open(".id.txt", "a+") as unique_id: # a+ creates the file if it does not exist
unique_id.seek(0)
person_id = unique_id.read()
if not person_id:
person_id = 1
else:
person_id = int(person_id)
person_id += 1
with open(".id.txt", "w+") as unique_id:
unique_id.write(str(person_id))
return person_id
这似乎对我有用:
用
r+
替换w+
。w+
甚至在读取之前就删除了文件内容,因此文件总是空的。r+
,另一方面,附加到文件。为了在写回之前删除内容,需要将file对象的指针设置为0,这解释了id.seek(0)
(位置0-在开头)。然后你可以再写一次。你知道吗希望这有帮助。你知道吗
在第一次调用时,必须确保文件存在,并且
如果不是,用
"w+"
打开,否则用"r+"
打开。你知道吗根据Python documentation:
由于使用
w+
打开文件,因此总是清除其内容,因此对.read
的调用返回空字符串。你知道吗相关问题 更多 >
编程相关推荐