第一次来电...
出于某种原因,我没有从我的" for"中得到所需的结果。循环。下面是代码片段。循环第一次完美地工作,因为LOOP 2实际上返回到LOOP 1.但第二次通过LOOP 2不执行。我在25年内没有编写代码,但却热爱Python。只需要通过一些初步的试验和错误。提前感谢任何可以就此主题提供建议的人。
import csv
filename='cookie_data.csv'
lookup_filename='ip_addresses.csv'
with open(filename) as file_object, open(lookup_filename) as lookup_file_object:
reader=csv.DictReader(file_object)
l_reader=csv.DictReader(lookup_file_object)
for row in reader:
user_ip=row['ip_address']
print("LOOP 1 " + user_ip)
for l_row in l_reader:
lookup_ip=l_row['lookup_ip']
print("LOOP 2 " + user_ip + lookup_ip)
输出如下: 循环1 99.246.228.140 循环2 99.246.228.140 循环2 137.104.238.184 循环2 137.104.238.184 循环2 99.246.228.140 第2卷81.182.15.119 循环1 137.104.238.184 循环1 137.104.238.184 第1卷74.110.238.103
我打算每次通过循环测试字符串(ip地址)的匹配。第一个循环很好,然后第二个循环不执行循环2.
答案 0 :(得分:0)
问题在于您的读者已附加到流中。因此,您只需要迭代一次。下次迭代时,它已经在文件末尾,所以它没有找到任何其他内容(因此“第二个循环不执行”)。
您可以通过seek每次完成文件对象时将其修复为开头:
import os
for row in reader:
user_ip=row['ip_address']
print("LOOP 1 " + user_ip)
for l_row in l_reader:
lookup_ip=l_row['lookup_ip']
print("LOOP 2 " + user_ip + lookup_ip)
# I prefer to explicitly say where we're seeking from, though I
# could have just left it as seek(0).
lookup_file_object.seek(0, os.SEEK_SET)