将新值添加到 txt 文件
Add new values to txt file
当用户启动我的机器人时,它会获取其用户 ID 并将其存储在 .txt 文件中。
def verify_id(update, context):
__location__ = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__)))
f = open(os.path.join(__location__, 'users_list_file.txt'), 'w+')
f_content = f.read().strip().split()
registered = False
user_id = str(update.message.from_user.id)
if user_id in f.read():
message_ok = "User already existing in DB"
update.message.reply_text(message_ok)
registered = True
else:
f.write(user_id)
message_added = "You have been added to my list :)"
update.message.reply_text(message_added)
f.close()
目标:
- 如果用户从未启动过机器人,它应该将其用户 ID 添加到 .txt 文件中。
- 如果用户已经 "registered",机器人应该打印一些文本让用户知道他们已经注册。
问题:
- 将用户 ID 添加到文件后,如果您用同一用户重试相同的命令,它会 returns 文本 "You have been added to my list :)",这意味着无法读取文件,以验证如果用户标识已经存在?
- 我与另一个用户进行了测试,机器人似乎删除了最后一个用户的值,将其替换为最新用户的用户 ID。我只想添加,而不是替换。
任何建议都会对我有很大帮助...
Python版本:3.6.5
with open('file_name.txt','a+') as file:
file.write(data)
'a' 标志用于追加。 'w' 将写入文件,但会覆盖其内容。
注意打开文件时使用with
。这样您就不必担心之后会关闭文件。注意在每个写语句中添加一个换行符。
file.write('\n' + id)
问题中提供的代码每次('w+')
写入数据并替换旧值。如果您必须检查以后的用户,我建议您维护一个包含 user_ids 列表的字典,并在列表发生变化时更新写下来,否则只发送一条消息。
下面是一个类似方式的简单示例:
import os
import json
def verify_id(user_id):
if not os.path.exists("example_users.json"):
users = {}
users_list = []
else:
f = open("example_users.json")
users = json.load(f)
users_list = users["users"]
if user_id not in users_list:
users_list.append(user_id)
users["users"] = users_list
# Rewrite
with open("example_users.json", 'w') as f:
json.dump(users, f)
else:
#Some message
print("Already present")
下面是 json 对一些用户的看法:
{"users": [1, 132]}
让我们添加相同的用户:
verify_id(1)
Already present
新用户:
verify_id(123)
json updated: {"users": [1, 132, 123]}
当用户启动我的机器人时,它会获取其用户 ID 并将其存储在 .txt 文件中。
def verify_id(update, context):
__location__ = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__)))
f = open(os.path.join(__location__, 'users_list_file.txt'), 'w+')
f_content = f.read().strip().split()
registered = False
user_id = str(update.message.from_user.id)
if user_id in f.read():
message_ok = "User already existing in DB"
update.message.reply_text(message_ok)
registered = True
else:
f.write(user_id)
message_added = "You have been added to my list :)"
update.message.reply_text(message_added)
f.close()
目标:
- 如果用户从未启动过机器人,它应该将其用户 ID 添加到 .txt 文件中。
- 如果用户已经 "registered",机器人应该打印一些文本让用户知道他们已经注册。
问题:
- 将用户 ID 添加到文件后,如果您用同一用户重试相同的命令,它会 returns 文本 "You have been added to my list :)",这意味着无法读取文件,以验证如果用户标识已经存在?
- 我与另一个用户进行了测试,机器人似乎删除了最后一个用户的值,将其替换为最新用户的用户 ID。我只想添加,而不是替换。
任何建议都会对我有很大帮助...
Python版本:3.6.5
with open('file_name.txt','a+') as file:
file.write(data)
'a' 标志用于追加。 'w' 将写入文件,但会覆盖其内容。
注意打开文件时使用with
。这样您就不必担心之后会关闭文件。注意在每个写语句中添加一个换行符。
file.write('\n' + id)
问题中提供的代码每次('w+')
写入数据并替换旧值。如果您必须检查以后的用户,我建议您维护一个包含 user_ids 列表的字典,并在列表发生变化时更新写下来,否则只发送一条消息。
下面是一个类似方式的简单示例:
import os
import json
def verify_id(user_id):
if not os.path.exists("example_users.json"):
users = {}
users_list = []
else:
f = open("example_users.json")
users = json.load(f)
users_list = users["users"]
if user_id not in users_list:
users_list.append(user_id)
users["users"] = users_list
# Rewrite
with open("example_users.json", 'w') as f:
json.dump(users, f)
else:
#Some message
print("Already present")
下面是 json 对一些用户的看法:
{"users": [1, 132]}
让我们添加相同的用户:
verify_id(1)
Already present
新用户:
verify_id(123)
json updated: {"users": [1, 132, 123]}