Задать вопрос
HighwayToCode
@HighwayToCode
While Учусь do Туплю

Почему не проходит проверка значений?

Добрый день!

Собственно, в коде все описано. Основная проблема в том, что значения "а" и "с" некорректны. Мне кажется, что проблема в проверке.
Подскажите, пожалуйста: что делать и как это исправить?

path = 'D:\\For_Denis\\Projects\\nginx_log_parser\\nginx.txt'
path_1 = 'D:\\For_Denis\\Projects\\nginx_log_parser\\nginx_1.txt'
log = open(path, 'r')
logs = open(path_1, 'r')

lines = 0 

for line in log:
    lines = lines + 1 

print(lines) #выдает верное значение
    
a = 0 #количество POST
c = 0 #количество GET
b = 0 #количество пройденных строк

while b < lines:
    check = str(logs.readline())
    if 'POST' in check:
        a = a + 1
        b = b + 1 
    elif 'GET' in check:
        c = c + 1
        b = b + 1 
    else:
        break
 
print(a, c, b, sep =',') #выдает "1, 4, 5". Скорее всего проблема в проверке им значений
  • Вопрос задан
  • 113 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 2
FeNUMe
@FeNUMe
У вас первый цикл for, вычитывает весь файл до конца и в log.readline() уже пусто.
path = 'D:\\For_Denis\\Projects\\nginx_log_parser\\nginx.txt'

a = 0 #количество GET
c = 0 #количество POST
b = 0 #количество пройденных строк

with open(path) as f:
    for line in f:
        b += 1
        if 'GET' in line:
            a +=1
        elif 'POST' in line:
            c +=1
        else:
            break
        
print(a,",", c)
Ответ написан
HighwayToCode
@HighwayToCode Автор вопроса
While Учусь do Туплю
Вот как была решена задача:

path = 'D:\\For_Denis\\Projects\\nginx_log_parser\\big_log.txt'
path_1 = 'D:\\For_Denis\\Projects\\nginx_log_parser\\big_log_1.txt'
log = open(path, 'r')
logs = open(path_1, 'r')

lines = 0 

for line in log:
    lines = lines + 1 
    
a = 0 #количество POST
b = 0 #количество пройденных строк

while b < lines:
    check = str(logs.readline())
    if 'GET' in check: 
        if '200' in check:
            a += 1
            b += 1
        else:
            b += 1       
    else:
        b += 1
    
print(a)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы