最近在写一个小脚本的时候遇到的一个小问题,难倒了多个高级安全工程师,就记录下来了。
我在做文件读取循环的时候,比较喜欢这么写:1
2
3f_open = fopen('1.txt','r')
for i in f_open:
print()
然后呢,正好有两个文件要进行匹配,那么不就是二次循环嘛1
2
3
4
5
6f_open1 = fopen('1.txt','r')
f_open2 = fopen('2.txt','r')
for i in f_open1:
for d in f_open2:
if d in i:
print()
然后就发现了,每次只循环2.txt中的list一遍,也就是说,第一个for没起作用。
最后发现,fopen打开的是一个文件流,循环一遍以后,不会再回到开头,所以只会循环一遍。
1 | f_open1 = fopen('1.txt','r') |
这么写就不会有问题了,或者
1 | fopen().read() |