如果存在一个值,如何将文本文件的所有行读取到 return,如果不存在则写入该值?
How to read all lines of text file to return if a value is present and then write this value if not present?
我对使用 Python 读取我的 txt 文件然后附加一个值有点困惑。
我要实现的是调用 API,检索最新对象的 ID,并检查此 ID 是否已在先前检索和发布的对象列表中。
我用 5 个随机 ID 预填充了我的输出文件,看看它是否有效(请参阅输出文件前五行)。
我调用的结果是它对输出文件中的每一行进行检查,然后打印 id 值的五倍(来自新的 API 调用)。然后对于第二次调用,它在前五行再次打印了 5 次,对于接下来的五行,它终于看到 id 存在,因为这次是相同的,但也打印了五次 I found nothing interesting :(
。
我想要的只是让 1 个操作一次读取所有行,并检查 present/not 存在,然后 write/not 写入。我正在用 Py3 编写,但最终将不得不移植到 Py2。
如果您认为我总体上确实做错了,请告诉我,我是新手。
这是片段:
with open('Output.txt', 'r') as f:
for line in f.readline():
if idValue in line:
print("I found nothing interesting :(")
else:
send_message_to_slack(string)
print("bingo, message sent!")
# Saving the value retrieved to a text file for the next call
with open("Output.txt", "a") as text_file:
#print("{}".format(idValue), file=text_file)
text_file.write("\n"+idValue)
time.sleep(100)
我的日志:
Checking id value
Calling API
decode data
retrieving_id
bingo, message sent!
bingo, message sent!
bingo, message sent!
bingo, message sent!
bingo, message sent!
Checking id value
Calling API
decode data
retrieving_id
bingo, message sent!
bingo, message sent!
bingo, message sent!
bingo, message sent!
bingo, message sent!
I found nothing interesting :(
I found nothing interesting :(
I found nothing interesting :(
I found nothing interesting :(
I found nothing interesting :(
输出文件:
5468
64654654
6546
35463
7575337
308381357
308381357
308381357
308381357
308381357
308381357
308381357
308381357
308381357
308381357
你真的很接近!要在一个操作中完成所有值检查,您应该使用中间 set
来读取和存储所有当前值,然后检查 set
是否存在新的 [=13] =]:
with open('Output.txt', 'r') as f:
currentValues = set()
for line in f.readline():
currentValues.add(int(line))
if idValue in currentValues:
print("I found nothing interesting :(")
else:
send_message_to_slack(string)
print("bingo, message sent!")
# Saving the value retrieved to a text file for the next call
with open("Output.txt", "a") as text_file:
#print("{}".format(idValue), file=text_file)
text_file.write("\n"+idValue)
time.sleep(100)
希望对您有所帮助!
我对使用 Python 读取我的 txt 文件然后附加一个值有点困惑。
我要实现的是调用 API,检索最新对象的 ID,并检查此 ID 是否已在先前检索和发布的对象列表中。
我用 5 个随机 ID 预填充了我的输出文件,看看它是否有效(请参阅输出文件前五行)。
我调用的结果是它对输出文件中的每一行进行检查,然后打印 id 值的五倍(来自新的 API 调用)。然后对于第二次调用,它在前五行再次打印了 5 次,对于接下来的五行,它终于看到 id 存在,因为这次是相同的,但也打印了五次 I found nothing interesting :(
。
我想要的只是让 1 个操作一次读取所有行,并检查 present/not 存在,然后 write/not 写入。我正在用 Py3 编写,但最终将不得不移植到 Py2。
如果您认为我总体上确实做错了,请告诉我,我是新手。
这是片段:
with open('Output.txt', 'r') as f:
for line in f.readline():
if idValue in line:
print("I found nothing interesting :(")
else:
send_message_to_slack(string)
print("bingo, message sent!")
# Saving the value retrieved to a text file for the next call
with open("Output.txt", "a") as text_file:
#print("{}".format(idValue), file=text_file)
text_file.write("\n"+idValue)
time.sleep(100)
我的日志:
Checking id value
Calling API
decode data
retrieving_id
bingo, message sent!
bingo, message sent!
bingo, message sent!
bingo, message sent!
bingo, message sent!
Checking id value
Calling API
decode data
retrieving_id
bingo, message sent!
bingo, message sent!
bingo, message sent!
bingo, message sent!
bingo, message sent!
I found nothing interesting :(
I found nothing interesting :(
I found nothing interesting :(
I found nothing interesting :(
I found nothing interesting :(
输出文件:
5468
64654654
6546
35463
7575337
308381357
308381357
308381357
308381357
308381357
308381357
308381357
308381357
308381357
308381357
你真的很接近!要在一个操作中完成所有值检查,您应该使用中间 set
来读取和存储所有当前值,然后检查 set
是否存在新的 [=13] =]:
with open('Output.txt', 'r') as f:
currentValues = set()
for line in f.readline():
currentValues.add(int(line))
if idValue in currentValues:
print("I found nothing interesting :(")
else:
send_message_to_slack(string)
print("bingo, message sent!")
# Saving the value retrieved to a text file for the next call
with open("Output.txt", "a") as text_file:
#print("{}".format(idValue), file=text_file)
text_file.write("\n"+idValue)
time.sleep(100)
希望对您有所帮助!