Показать статистику
0 голосов
от (1.7тыс. баллов)

Пытаюсь осваивать Python 3 и в качестве практического задания решил написать простенький парсер логов Nginx. До самого парсера дело не дошло, потому что все застопорилось гораздо раньше :-)

Кто может подсказать почему код ничего не выводит? Файл по указанному пути существует. Система - Ubuntu 18.10 (но думаю не суть важно)

#!/usr/bin/python3
from pathlib import Path
class Parser:
    def __init__(self):
        pass
    def __repr__(self, line_to_parse):
        return self.line_to_parse
    def log_open():
        '''This function checks if file exist
        '''
        my_file = Path("/var/log/nginx/access.log")
        if my_file.is_file():
            with open(my_file) as line_to_parse:
                print(line_to_parse)
def main():
    Parser()
if __name__ == "__main__":
    main()
42 просмотров 1 ответов

1 Ответ

0 голосов
от (8.5тыс. баллов)

У вас конструктор __init__ ничего не делает, так же как и __repr__.  Вам что нужно? Просто вывести все строки файла? Я набросал такой код, вроде работает: 

#!/usr/local/bin/python3

from pathlib import Path


class LogParser:

    def parser(logfile):

        if not Path(logfile):
            print("Logfile does not exist!")
            return False

        with open(logfile) as line:
            for myline in line:
                print(myline)


def main():

    '''Taking file to parse from command line'''
    logfile = input("Tell me where is your file:")
    if logfile:
        try:
            LogParser.parser(logfile)
        except Exception:
            print("You entered wrong path")
            return False

    else:
        print("You entered nothing!")
        return False


if __name__ == "__main__":
    main()
...