如何查看字符串是否在文本文件中(有点)? python
How to see if a string is in a text file (kinda) ? python
我正在编写一个正在寻找一些东西的 discord 机器人:
1) 检查发送命令名称的用户是否已经在文件中,发送消息的用户是"member"变量。
2) 如果用户不在文件中,则应将其名称添加到文件中。
3) 如果用户在文件中,它会向他们发送一条消息,说明他们不能将自己的名字添加两次。
下面的代码我已经尝试了不同的变体,但仍然不能完全理解。打印 (current_name) 在那里所以我可以看到代码是否循环遍历文本文件的所有行,并且只有当我尝试读取文件的行并查看成员是否不在其中时,它才不会' 将所有名称打印到控制台。如果您需要更多代码,请lmk。
source_file_name = 'tracker.txt'
temporary_file_name = 'tracker_temp.txt'
with open(source_file_name, mode='r') as source_file:
with open(temporary_file_name, mode='w') as temporary_file:
for current_line in source_file:
line_splitted = current_line.split()
current_name = line_splitted[0]
print(current_name)
if str(member) not in source_file.readlines():
output_line = str(member) + "\n"
temporary_file.write(output_line)
elif current_name == str(member):
output_line = str(member) + "\n"
mporary_file.write(output_line)
await client.send_message(message.channel, "You cannot redeem another role while your other role is still active!")
else:
output_line = current_name + "\n"
temporary_file.write(output_line)
os.replace(temporary_file_name, source_file_name)
我能理解你最后一段的问题。
您需要更改的是:
with open(source_file_name, mode='r') as source_file:
with open(temporary_file_name, mode='w') as temporary_file:
content = source_file.readlines() # gives you a list of all the lines
for line in content:
current_name = line.split(' ')[0]
print current_name
这将导致:
# result of source_file.readlines():
# content = ['Name1 asd fgh', 'Name2 qwe rty']
# Console:
# "Name1"
# "Name2"
请提供更多信息,以便我提供帮助。
我正在编写一个正在寻找一些东西的 discord 机器人:
1) 检查发送命令名称的用户是否已经在文件中,发送消息的用户是"member"变量。
2) 如果用户不在文件中,则应将其名称添加到文件中。
3) 如果用户在文件中,它会向他们发送一条消息,说明他们不能将自己的名字添加两次。
下面的代码我已经尝试了不同的变体,但仍然不能完全理解。打印 (current_name) 在那里所以我可以看到代码是否循环遍历文本文件的所有行,并且只有当我尝试读取文件的行并查看成员是否不在其中时,它才不会' 将所有名称打印到控制台。如果您需要更多代码,请lmk。
source_file_name = 'tracker.txt'
temporary_file_name = 'tracker_temp.txt'
with open(source_file_name, mode='r') as source_file:
with open(temporary_file_name, mode='w') as temporary_file:
for current_line in source_file:
line_splitted = current_line.split()
current_name = line_splitted[0]
print(current_name)
if str(member) not in source_file.readlines():
output_line = str(member) + "\n"
temporary_file.write(output_line)
elif current_name == str(member):
output_line = str(member) + "\n"
mporary_file.write(output_line)
await client.send_message(message.channel, "You cannot redeem another role while your other role is still active!")
else:
output_line = current_name + "\n"
temporary_file.write(output_line)
os.replace(temporary_file_name, source_file_name)
我能理解你最后一段的问题。 您需要更改的是:
with open(source_file_name, mode='r') as source_file:
with open(temporary_file_name, mode='w') as temporary_file:
content = source_file.readlines() # gives you a list of all the lines
for line in content:
current_name = line.split(' ')[0]
print current_name
这将导致:
# result of source_file.readlines():
# content = ['Name1 asd fgh', 'Name2 qwe rty']
# Console:
# "Name1"
# "Name2"
请提供更多信息,以便我提供帮助。