{"id":117653,"date":"2026-05-11T18:08:40","date_gmt":"2026-05-11T12:38:40","guid":{"rendered":"https:\/\/www.mygreatlearning.com\/blog\/?page_id=117653"},"modified":"2026-05-11T18:08:27","modified_gmt":"2026-05-11T12:38:27","slug":"python-program-log-reader","status":"publish","type":"page","link":"https:\/\/www.mygreatlearning.com\/blog\/python-exercise\/python-program-log-reader\/","title":{"rendered":"Python Program Log Reader"},"content":{"rendered":"\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/codemirror\/5.65.16\/codemirror.min.css\" \/>\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/codemirror\/5.65.16\/theme\/eclipse.min.css\" \/>\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css\">\n\n<style>\n    .py-receipt-wrapper {\n        --py-bg-app: #f9fafb;\n        --py-bg-panel: #ffffff;\n        --py-border: #e5e7eb;\n        --py-text-primary: #1f2937;\n        --py-text-secondary: #6b7280;\n        --py-primary-blue: #2563eb;\n        --py-primary-hover: #1d4ed8;\n        --py-header-height: 50px;\n        --py-footer-height: 60px;\n\n        font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n        background-color: var(--py-bg-app);\n        color: var(--py-text-primary);\n        width: 100%;\n        border: 1px solid var(--py-border);\n        box-sizing: border-box;\n        display: flex;\n        flex-direction: column;\n        min-height: 85vh;\n    }\n\n    .py-receipt-wrapper * { box-sizing: border-box; }\n\n    .py-receipt-top-nav {\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n        height: var(--py-header-height);\n        padding: 0 20px;\n        background: var(--py-bg-panel);\n        border-bottom: 1px solid var(--py-border);\n        min-width: 100%;\n    }\n    .py-receipt-nav-title { font-weight: 600; color: var(--py-text-secondary); font-size: 14px; }\n\n    .py-receipt-ide-container {\n        display: flex; flex: 1; height: auto; min-width: 100%; background: white; overflow: hidden;\n    }\n\n    .py-receipt-left-pane {\n        width: 45%; border-right: 1px solid var(--py-border); background: var(--py-bg-panel); display: flex; flex-direction: column;\n    }\n\n    .py-receipt-tabs-header {\n        height: var(--py-header-height); border-bottom: 1px solid var(--py-border); display: flex;\n        align-items: center; padding: 0 20px; gap: 25px; font-size: 14px; font-weight: 500; color: var(--py-text-secondary);\n    }\n\n    .py-receipt-tab-item { cursor: pointer; padding: 14px 0; border-bottom: 2px solid transparent; }\n    .py-receipt-tab-item.active { color: var(--py-text-primary); border-bottom-color: var(--py-primary-blue); }\n    .py-receipt-tab-item:hover { color: var(--py-text-primary); }\n\n    .py-receipt-pane-content { flex: 1; overflow-y: auto; padding: 25px; display: none; }\n    .py-receipt-pane-content.active { display: block; }\n\n    .py-receipt-wrapper h1 { margin-top: 0; font-size: 22px; font-weight: 600; color: var(--py-text-primary); margin-bottom: 1rem; }\n    .py-receipt-wrapper p { line-height: 1.6; color: #374151; margin-bottom: 1rem; }\n    .py-receipt-wrapper ul { margin-bottom: 20px; color: #374151; line-height: 1.6; padding-left: 20px; }\n    .py-receipt-wrapper li { margin-bottom: 5px; }\n    .py-receipt-wrapper h3 { font-size: 16px; margin-top: 15px; margin-bottom: 10px; }\n\n    .py-receipt-solution-block {\n        background: #f8f9fa; border: 1px solid var(--py-border); padding: 15px;\n        border-radius: 6px; font-family: 'Consolas', monospace; font-size: 14px;\n        color: #333; white-space: pre-wrap; overflow-x: auto;\n    }\n\n    .py-receipt-sample-box { background-color: #f3f4f6; border: 1px solid var(--py-border); border-radius: 6px; margin-top: 20px; overflow: hidden; }\n    .py-receipt-sample-header { display: flex; background-color: #e5e7eb; font-size: 13px; font-weight: 600; color: var(--py-text-primary); }\n    .py-receipt-sample-col-title { width: 50%; padding: 8px 15px; border-right: 1px solid #d1d5db; }\n    .py-receipt-sample-col-content { width: 50%; padding: 15px; font-family: 'Consolas', monospace; font-size: 14px; border-right: 1px solid var(--py-border); white-space: pre-wrap; color: #333; }\n    .py-receipt-sample-body { display: flex; }\n\n    .py-receipt-right-pane { width: 55%; display: flex; flex-direction: column; background: var(--py-bg-panel); }\n\n    .py-receipt-editor-top-bar {\n        height: var(--py-header-height); border-bottom: 1px solid var(--py-border);\n        display: flex; align-items: center; justify-content: space-between;\n        padding: 0 15px; background-color: #f9fafb;\n    }\n\n    .py-receipt-lang-label { font-weight: 600; font-size: 14px; background: #e5e7eb; padding: 4px 12px; border-radius: 4px; }\n    .py-receipt-editor-settings i { color: var(--py-text-secondary); margin-left: 15px; cursor: pointer; font-size: 16px; }\n\n    .py-receipt-code-area { flex: 1; display: flex; flex-direction: column; position: relative; }\n    .py-receipt-code-area .CodeMirror { flex: 1; height: 100%; position: absolute; top: 0; bottom: 0; left: 0; right: 0; font-family: 'Source Code Pro', monospace; font-size: 15px; }\n\n    .py-receipt-console-section { border-top: 1px solid var(--py-border); background: #f9fafb; display: flex; flex-direction: column; height: 35%; }\n    .py-receipt-console-header { padding: 8px 15px; background: #e5e7eb; font-size: 12px; font-weight: 600; color: var(--py-text-secondary); text-transform: uppercase; }\n    .py-receipt-console-body { display: flex; flex: 1; overflow: hidden; }\n    .py-receipt-input-wrapper, .py-receipt-output-wrapper { flex: 1; display: flex; flex-direction: column; padding: 10px; border-right: 1px solid var(--py-border); }\n    .py-receipt-output-wrapper { border-right: none; }\n    .py-receipt-console-label { font-size: 12px; font-weight: 600; margin-bottom: 5px; color: var(--py-text-secondary); }\n\n    textarea.py-receipt-custom-input-area { flex: 1; border: 1px solid var(--py-border); border-radius: 4px; resize: none; padding: 8px; font-family: monospace; width: 100%; }\n\n    .py-receipt-output-display {\n        flex: 1; background: white; border: 1px solid var(--py-border);\n        border-radius: 4px; padding: 8px; font-family: monospace;\n        white-space: pre-wrap; overflow-y: auto; font-size: 13px; line-height: 1.15;\n    }\n\n    .py-receipt-footer-actions {\n        height: var(--py-footer-height); border-top: 1px solid var(--py-border);\n        display: flex; align-items: center; justify-content: flex-end;\n        padding: 0 20px; background-color: var(--py-bg-panel);\n    }\n\n    .py-receipt-execution-group { display: flex; gap: 12px; align-items: center; }\n\n    .py-receipt-btn {\n        padding: 8px 20px; border-radius: 4px; font-size: 14px; font-weight: 600;\n        cursor: pointer; text-decoration: none; display: inline-flex; align-items: center;\n        justify-content: center; transition: 0.2s; height: 38px; box-shadow: none; border: none;\n    }\n\n    .py-receipt-btn-secondary { background: transparent; border: 1px solid var(--py-border); color: var(--py-text-primary); }\n    .py-receipt-btn-secondary:hover { background: #f3f4f6; }\n    .py-receipt-btn-primary { background: var(--py-primary-blue); border: 1px solid var(--py-primary-blue); color: white; }\n    .py-receipt-btn-primary:hover { background: var(--py-primary-hover); }\n\n    .py-receipt-spinner {\n        display: none; width: 14px; height: 14px; border: 2px solid #fff; border-top-color: transparent;\n        border-radius: 50%; animation: py-receipt-spin 0.8s linear infinite; margin-left: 8px;\n    }\n    @keyframes py-receipt-spin { 100% { transform: rotate(360deg); } }\n\n    .py-receipt-hidden { display: none !important; }\n    .py-receipt-btn-mobile { display: none !important; }\n\n    @media (max-width: 768px) {\n        .py-receipt-wrapper { display: block; height: auto; min-height: auto; }\n        .py-receipt-ide-container { flex: none; height: auto; }\n        .py-receipt-top-nav { display: none; }\n        .py-receipt-ide-container { flex-direction: column; overflow-y: auto; height: auto; }\n        .py-receipt-left-pane, .py-receipt-right-pane { width: 100%; height: auto; }\n        .py-receipt-left-pane { border-right: none; border-bottom: 8px solid #f3f4f6; min-height: auto; max-height: 400px; }\n        .py-receipt-right-pane { display: flex; flex-direction: column; }\n        .py-receipt-console-section, .py-receipt-console-body, .py-receipt-footer-actions { display: contents; }\n        .py-receipt-console-header { display: none; }\n        .py-receipt-editor-top-bar { order: 1; }\n        .py-receipt-code-area { order: 2; height: 500px; flex: none; }\n        .py-receipt-code-area .CodeMirror { position: relative; height: 500px; }\n        .py-receipt-input-wrapper { order: 3; width: 100%; height: auto; min-height: 280px; border-right: none; border-top: 8px solid #f3f4f6; border-bottom: 1px solid var(--py-border); }\n        .py-receipt-execution-group { order: 4; width: 100%; display: flex; padding: 15px; gap: 10px; border-bottom: 1px solid var(--py-border); background: #fff; }\n        .py-receipt-execution-group .py-receipt-btn { flex: 1; }\n        .py-receipt-output-wrapper { order: 5; width: 100%; height: auto; min-height: 300px; max-height: 500px; border-right: none; background: #fff; }\n        .py-receipt-btn-mobile { display: inline-flex !important; order: 6; width: 48%; margin: 15px 1%; box-sizing: border-box; text-align: center; }\n        a.py-receipt-hidden { display: none !important; }\n    }\n<\/style>\n\n<div class=\"py-receipt-wrapper\">\n    <div class=\"py-receipt-top-nav\">\n        <a id=\"py-log-btn-prev-top\" class=\"py-receipt-btn py-receipt-btn-secondary py-receipt-hidden\" href=\"#\">&larr; Previous<\/a>\n        <span class=\"py-receipt-nav-title\">Module 7: File Handling &amp; Error Handling<\/span>\n        <a id=\"py-log-btn-next-top\" class=\"py-receipt-btn py-receipt-btn-primary py-receipt-hidden\" href=\"#\">Next &rarr;<\/a>\n    <\/div>\n\n    <div class=\"py-receipt-ide-container\" id=\"py-log-ideContainer\">\n\n        <div class=\"py-receipt-left-pane\">\n            <div class=\"py-receipt-tabs-header\">\n                <div class=\"py-receipt-tab-item active\" onclick=\"pyLogSwitchTab('statement')\">Statement<\/div>\n                <div class=\"py-receipt-tab-item\" onclick=\"pyLogSwitchTab('solution')\">Solution<\/div>\n            <\/div>\n\n            <div id=\"py-log-tab-statement\" class=\"py-receipt-pane-content active\">\n                <h1 id=\"python-exercise-7-2-log-reader\">Python Exercise 7.2: Log Reader<\/h1>\n                <p>Log files are a common source of data in real-world applications. Write a program that reads a log file called <code>server.log<\/code> and counts how many lines contain the word <code>\"ERROR\"<\/code>.<\/p>\n\n                <p>Your program should:<\/p>\n                <ul>\n                    <li>Create a file named <code>server.log<\/code> and write several lines to it, some containing the word <code>ERROR<\/code> and some that don't.<\/li>\n                    <li>Open and read the file line by line.<\/li>\n                    <li>Count the number of lines that contain the word <code>\"ERROR\"<\/code>.<\/li>\n                    <li>Print the total count of error lines found.<\/li>\n                    <li>Use a <code>try\/except<\/code> block to handle the case where the file does not exist (<code>FileNotFoundError<\/code>).<\/li>\n                <\/ul>\n\n                <h3 id=\"sample-interaction\">Sample Interaction:<\/h3>\n                <div class=\"py-receipt-sample-box\">\n                    <div class=\"py-receipt-sample-header\">\n                        <div class=\"py-receipt-sample-col-title\">Input<\/div>\n                        <div class=\"py-receipt-sample-col-title\">Output<\/div>\n                    <\/div>\n                    <div class=\"py-receipt-sample-body\">\n                        <div class=\"py-receipt-sample-col-content\">(None)<\/div>\n                        <div class=\"py-receipt-sample-col-content\">Reading server.log...\nTotal ERROR lines found: 3<\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <div id=\"py-log-tab-solution\" class=\"py-receipt-pane-content\">\n                <h1 id=\"solution\">Solution<\/h1>\n                <p>We first write the log file, then open it for reading and scan each line for the keyword <code>\"ERROR\"<\/code>, keeping a running counter.<\/p>\n                <div class=\"py-receipt-solution-block\"># 1. Create a sample server.log file\nlog_content = \"\"\"INFO: Server started successfully\nINFO: Connection established from 192.168.1.1\nERROR: Disk space running low\nINFO: Request processed in 120ms\nERROR: Database connection timeout\nWARNING: Memory usage above 80%\nERROR: Failed to authenticate user\nINFO: Backup completed successfully\n\"\"\"\n\nwith open(\"server.log\", \"w\") as f:\n    f.write(log_content)\n\n# 2. Read the file and count ERROR lines\ntry:\n    error_count = 0\n    print(\"Reading server.log...\")\n    with open(\"server.log\", \"r\") as f:\n        for line in f:\n            if \"ERROR\" in line:\n                error_count += 1\n    print(f\"Total ERROR lines found: {error_count}\")\nexcept FileNotFoundError:\n    print(\"Error: server.log file not found.\")<\/div>\n\n                <p style=\"margin-top:20px\"><strong>Key Concepts:<\/strong><\/p>\n                <ul>\n                    <li><code>open(\"file\", \"r\")<\/code> opens a file for reading; <code>\"w\"<\/code> opens it for writing.<\/li>\n                    <li>The <code>with<\/code> statement automatically closes the file when the block exits.<\/li>\n                    <li>Iterating over a file object reads it line by line.<\/li>\n                    <li><code>\"ERROR\" in line<\/code> checks if the substring exists anywhere in the line.<\/li>\n                    <li><code>FileNotFoundError<\/code> is raised when Python cannot locate the specified file.<\/li>\n                <\/ul>\n            <\/div>\n        <\/div>\n\n        <div class=\"py-receipt-right-pane\">\n            <div class=\"py-receipt-editor-top-bar\">\n                <span class=\"py-receipt-lang-label\">Python 3<\/span>\n                <div class=\"py-receipt-editor-settings\">\n                    <i class=\"fas fa-expand\" id=\"py-log-fullscreenBtn\" title=\"Toggle Fullscreen\"><\/i>\n                <\/div>\n            <\/div>\n\n            <div class=\"py-receipt-code-area\">\n                <div id=\"py-log-code-editor-div\"><\/div>\n            <\/div>\n\n            <div class=\"py-receipt-console-section\">\n                <div class=\"py-receipt-console-header\">Test Console<\/div>\n                <div class=\"py-receipt-console-body\">\n                    <div class=\"py-receipt-input-wrapper\">\n                        <label class=\"py-receipt-console-label\">Custom Input (Stdin)<\/label>\n                        <textarea id=\"py-log-custom-input\" class=\"py-receipt-custom-input-area\" placeholder=\"No input needed...\" disabled style=\"background: #f3f4f6; color: #9ca3af;\"><\/textarea>\n                    <\/div>\n                    <div class=\"py-receipt-output-wrapper\">\n                        <label class=\"py-receipt-console-label\">Output<\/label>\n                        <div id=\"py-log-output-console\" class=\"py-receipt-output-display\">Run code to see output...<\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"py-receipt-footer-actions\">\n                <a id=\"py-log-btn-prev-mobile\" class=\"py-receipt-btn py-receipt-btn-secondary py-receipt-hidden py-receipt-btn-mobile\" href=\"#\">&larr; Previous<\/a>\n\n                <div class=\"py-receipt-execution-group\">\n                    <button class=\"py-receipt-btn py-receipt-btn-secondary\" onclick=\"pyLogResetCode()\">Reset<\/button>\n                    <button class=\"py-receipt-btn py-receipt-btn-primary\" onclick=\"pyLogRunCode()\">\n                        <span id=\"py-log-btn-text\">Run Code<\/span>\n                        <span class=\"py-receipt-spinner\" id=\"py-log-btn-spinner\"><\/span>\n                    <\/button>\n                <\/div>\n\n                <a id=\"py-log-btn-next-mobile\" class=\"py-receipt-btn py-receipt-btn-primary py-receipt-hidden py-receipt-btn-mobile\" href=\"#\">Next &rarr;<\/a>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/codemirror\/5.65.16\/codemirror.min.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/codemirror\/5.65.16\/mode\/python\/python.min.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/codemirror\/5.65.16\/addon\/edit\/closebrackets.min.js\"><\/script>\n\n<script>\n    var pyLogEditor;\n    var pyLogStarterCode;\n\n    const pyLogPrevLink = \"\";\n    const pyLogNextLink = \"\";\n\n    document.addEventListener(\"DOMContentLoaded\", function() {\n        const prevBtnTop = document.getElementById('py-log-btn-prev-top');\n        const nextBtnTop = document.getElementById('py-log-btn-next-top');\n        const prevBtnMobile = document.getElementById('py-log-btn-prev-mobile');\n        const nextBtnMobile = document.getElementById('py-log-btn-next-mobile');\n\n        if (pyLogPrevLink && pyLogPrevLink.trim() !== \"\") {\n            prevBtnTop.href = pyLogPrevLink;\n            prevBtnMobile.href = pyLogPrevLink;\n            prevBtnTop.classList.remove('py-receipt-hidden');\n            prevBtnMobile.classList.remove('py-receipt-hidden');\n        }\n        if (pyLogNextLink && pyLogNextLink.trim() !== \"\") {\n            nextBtnTop.href = pyLogNextLink;\n            nextBtnMobile.href = pyLogNextLink;\n            nextBtnTop.classList.remove('py-receipt-hidden');\n            nextBtnMobile.classList.remove('py-receipt-hidden');\n        }\n    });\n\n    function pyLogSwitchTab(tabName) {\n        document.querySelectorAll('#py-log-tab-statement, #py-log-tab-solution').forEach(el => el.classList.remove('active'));\n        const headerTabs = document.querySelector('#py-log-ideContainer .py-receipt-tabs-header').children;\n        Array.from(headerTabs).forEach(el => el.classList.remove('active'));\n        document.getElementById('py-log-tab-' + tabName).classList.add('active');\n        if (tabName === 'statement') headerTabs[0].classList.add('active');\n        if (tabName === 'solution') headerTabs[1].classList.add('active');\n    }\n\n    const pyLogFullscreenBtn = document.getElementById('py-log-fullscreenBtn');\n    const pyLogIdeContainer = document.getElementById('py-log-ideContainer');\n\n    if (pyLogFullscreenBtn) {\n        pyLogFullscreenBtn.addEventListener('click', () => {\n            if (!document.fullscreenElement) {\n                pyLogIdeContainer.requestFullscreen().catch(err => alert(`Error: ${err.message}`));\n                pyLogFullscreenBtn.classList.replace('fa-expand', 'fa-compress');\n            } else {\n                document.exitFullscreen();\n                pyLogFullscreenBtn.classList.replace('fa-compress', 'fa-expand');\n            }\n        });\n    }\n\n    pyLogStarterCode = `# Exercise 7.2: Log Reader\n# Read server.log and count lines containing \"ERROR\"\n\n# 1. First, create a sample server.log file to work with\nlog_content = \"\"\"INFO: Server started successfully\nINFO: Connection established from 192.168.1.1\nERROR: Disk space running low\nINFO: Request processed in 120ms\nERROR: Database connection timeout\nWARNING: Memory usage above 80%\nERROR: Failed to authenticate user\nINFO: Backup completed successfully\n\"\"\"\n\nwith open(\"server.log\", \"w\") as f:\n    f.write(log_content)\n\n# 2. Now read the file and count ERROR lines\n# try:\n\n    # Initialize a counter\n    # error_count = 0\n\n    # print(\"Reading server.log...\")\n\n    # Open and read the file line by line\n    # with open(\"server.log\", \"r\") as f:\n    #     for line in f:\n\n            # Check if \"ERROR\" is in the line\n            # if ...:\n\n\n    # Print the result\n\n\n# Handle missing file\n# except FileNotFoundError:\n\n`;\n\n    pyLogEditor = CodeMirror(document.getElementById(\"py-log-code-editor-div\"), {\n        value: pyLogStarterCode,\n        mode: \"python\",\n        theme: \"eclipse\",\n        lineNumbers: true,\n        indentUnit: 4,\n        autoCloseBrackets: true\n    });\n\n    function pyLogResetCode() {\n        pyLogEditor.setValue(pyLogStarterCode);\n        document.getElementById(\"py-log-output-console\").innerText = \"Run code to see output...\";\n    }\n\n    function pyLogRunCode() {\n        const spinner = document.getElementById('py-log-btn-spinner');\n        const btnText = document.getElementById('py-log-btn-text');\n        const outputBox = document.getElementById('py-log-output-console');\n\n        spinner.style.display = \"inline-block\";\n        btnText.innerText = \"Running \";\n        outputBox.innerText = \"Processing...\";\n        outputBox.style.color = \"#6b7280\";\n\n        const pythonCode = pyLogEditor.getValue();\n        const userInput = \"\";\n\n        fetch(\"https:\/\/blogsupport123-python-compiler.hf.space\/api\/run-python\", {\n            method: \"POST\",\n            headers: { \"Content-Type\": \"application\/json\" },\n            body: JSON.stringify({ code: pythonCode, input: userInput }),\n        })\n        .then(response => response.json())\n        .then(data => {\n            if (data.output) {\n                outputBox.innerText = data.output;\n                outputBox.style.color = \"#1f2937\";\n            } else if (data.error || data.errors) {\n                outputBox.innerText = data.error || data.errors;\n                outputBox.style.color = \"#ef4444\";\n            } else {\n                outputBox.innerText = \"No output returned.\";\n            }\n        })\n        .catch(err => {\n            outputBox.innerText = \"Error: \" + err.message;\n            outputBox.style.color = \"#ef4444\";\n        })\n        .finally(() => {\n            spinner.style.display = \"none\";\n            btnText.innerText = \"Run Code\";\n        });\n    }\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>&larr; Previous Module 7: File Handling &amp; Error Handling Next &rarr; Statement Solution Python Exercise 7.2: Log Reader Log files are a common source of data in real-world applications. Write a program that reads a log file called server.log and counts how many lines contain the word \"ERROR\". Your program should: Create a file named [&hellip;]<\/p>\n","protected":false},"author":41,"featured_media":0,"parent":114145,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[25860],"tags":[36796,36895],"class_list":["post-117653","page","type-page","status-publish","hentry","category-software","tag-python","tag-python-exercise"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Python Program Log Reader - Great Learning Blog: Free Resources what Matters to shape your Career!<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mygreatlearning.com\/blog\/python-exercise\/python-program-log-reader\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python Program Log Reader\" \/>\n<meta property=\"og:description\" content=\"&larr; Previous Module 7: File Handling &amp; Error Handling Next &rarr; Statement Solution Python Exercise 7.2: Log Reader Log files are a common source of data in real-world applications. Write a program that reads a log file called server.log and counts how many lines contain the word &quot;ERROR&quot;. Your program should: Create a file named [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mygreatlearning.com\/blog\/python-exercise\/python-program-log-reader\/\" \/>\n<meta property=\"og:site_name\" content=\"Great Learning Blog: Free Resources what Matters to shape your Career!\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/GreatLearningOfficial\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@Great_Learning\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/python-exercise\\\/python-program-log-reader\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/python-exercise\\\/python-program-log-reader\\\/\"},\"author\":{\"name\":\"Great Learning Editorial Team\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#\\\/schema\\\/person\\\/6f993d1be4c584a335951e836f2656ad\"},\"headline\":\"Python Program Log Reader\",\"datePublished\":\"2026-05-11T12:38:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/python-exercise\\\/python-program-log-reader\\\/\"},\"wordCount\":313,\"publisher\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#organization\"},\"keywords\":[\"python\",\"python-exercise\"],\"articleSection\":[\"IT\\\/Software Development\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/python-exercise\\\/python-program-log-reader\\\/\",\"url\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/python-exercise\\\/python-program-log-reader\\\/\",\"name\":\"Python Program Log Reader - Great Learning Blog: Free Resources what Matters to shape your Career!\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-05-11T12:38:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/python-exercise\\\/python-program-log-reader\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/python-exercise\\\/python-program-log-reader\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/python-exercise\\\/python-program-log-reader\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python Exercises\",\"item\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/python-exercise\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Python Program Log Reader\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/\",\"name\":\"Great Learning Blog\",\"description\":\"Learn, Upskill &amp; Career Development Guide and Resources\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#organization\"},\"alternateName\":\"Great Learning\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#organization\",\"name\":\"Great Learning\",\"url\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/GL-Logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/GL-Logo.jpg\",\"width\":900,\"height\":900,\"caption\":\"Great Learning\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/GreatLearningOfficial\\\/\",\"https:\\\/\\\/x.com\\\/Great_Learning\",\"https:\\\/\\\/www.instagram.com\\\/greatlearningofficial\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/school\\\/great-learning\\\/\",\"https:\\\/\\\/in.pinterest.com\\\/greatlearning12\\\/\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/beaconelearning\\\/\"],\"description\":\"Great Learning is a leading global ed-tech company for professional training and higher education. It offers comprehensive, industry-relevant, hands-on learning programs across various business, technology, and interdisciplinary domains driving the digital economy. These programs are developed and offered in collaboration with the world's foremost academic institutions.\",\"email\":\"info@mygreatlearning.com\",\"legalName\":\"Great Learning Education Services Pvt. Ltd\",\"foundingDate\":\"2013-11-29\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"1001\",\"maxValue\":\"5000\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#\\\/schema\\\/person\\\/6f993d1be4c584a335951e836f2656ad\",\"name\":\"Great Learning Editorial Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/02\\\/unnamed.webp\",\"url\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/02\\\/unnamed.webp\",\"contentUrl\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/02\\\/unnamed.webp\",\"caption\":\"Great Learning Editorial Team\"},\"description\":\"The Great Learning Editorial Staff includes a dynamic team of subject matter experts, instructors, and education professionals who combine their deep industry knowledge with innovative teaching methods. Their mission is to provide learners with the skills and insights needed to excel in their careers, whether through upskilling, reskilling, or transitioning into new fields.\",\"sameAs\":[\"https:\\\/\\\/www.mygreatlearning.com\\\/\",\"https:\\\/\\\/in.linkedin.com\\\/school\\\/great-learning\\\/\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/Great_Learning\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCObs0kLIrDjX2LLSybqNaEA\"],\"award\":[\"Best EdTech Company of the Year 2024\",\"Education Economictimes Outstanding Education\\\/Edtech Solution Provider of the Year 2024\",\"Leading E-learning Platform 2024\"],\"url\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/author\\\/greatlearning\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Python Program Log Reader - Great Learning Blog: Free Resources what Matters to shape your Career!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.mygreatlearning.com\/blog\/python-exercise\/python-program-log-reader\/","og_locale":"en_US","og_type":"article","og_title":"Python Program Log Reader","og_description":"&larr; Previous Module 7: File Handling &amp; Error Handling Next &rarr; Statement Solution Python Exercise 7.2: Log Reader Log files are a common source of data in real-world applications. Write a program that reads a log file called server.log and counts how many lines contain the word \"ERROR\". Your program should: Create a file named [&hellip;]","og_url":"https:\/\/www.mygreatlearning.com\/blog\/python-exercise\/python-program-log-reader\/","og_site_name":"Great Learning Blog: Free Resources what Matters to shape your Career!","article_publisher":"https:\/\/www.facebook.com\/GreatLearningOfficial\/","twitter_card":"summary_large_image","twitter_site":"@Great_Learning","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.mygreatlearning.com\/blog\/python-exercise\/python-program-log-reader\/#article","isPartOf":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/python-exercise\/python-program-log-reader\/"},"author":{"name":"Great Learning Editorial Team","@id":"https:\/\/www.mygreatlearning.com\/blog\/#\/schema\/person\/6f993d1be4c584a335951e836f2656ad"},"headline":"Python Program Log Reader","datePublished":"2026-05-11T12:38:40+00:00","mainEntityOfPage":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/python-exercise\/python-program-log-reader\/"},"wordCount":313,"publisher":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/#organization"},"keywords":["python","python-exercise"],"articleSection":["IT\/Software Development"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.mygreatlearning.com\/blog\/python-exercise\/python-program-log-reader\/","url":"https:\/\/www.mygreatlearning.com\/blog\/python-exercise\/python-program-log-reader\/","name":"Python Program Log Reader - Great Learning Blog: Free Resources what Matters to shape your Career!","isPartOf":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/#website"},"datePublished":"2026-05-11T12:38:40+00:00","breadcrumb":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/python-exercise\/python-program-log-reader\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mygreatlearning.com\/blog\/python-exercise\/python-program-log-reader\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.mygreatlearning.com\/blog\/python-exercise\/python-program-log-reader\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/www.mygreatlearning.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Python Exercises","item":"https:\/\/www.mygreatlearning.com\/blog\/python-exercise\/"},{"@type":"ListItem","position":3,"name":"Python Program Log Reader"}]},{"@type":"WebSite","@id":"https:\/\/www.mygreatlearning.com\/blog\/#website","url":"https:\/\/www.mygreatlearning.com\/blog\/","name":"Great Learning Blog","description":"Learn, Upskill &amp; Career Development Guide and Resources","publisher":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/#organization"},"alternateName":"Great Learning","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mygreatlearning.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.mygreatlearning.com\/blog\/#organization","name":"Great Learning","url":"https:\/\/www.mygreatlearning.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mygreatlearning.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2022\/06\/GL-Logo.jpg","contentUrl":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2022\/06\/GL-Logo.jpg","width":900,"height":900,"caption":"Great Learning"},"image":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/GreatLearningOfficial\/","https:\/\/x.com\/Great_Learning","https:\/\/www.instagram.com\/greatlearningofficial\/","https:\/\/www.linkedin.com\/school\/great-learning\/","https:\/\/in.pinterest.com\/greatlearning12\/","https:\/\/www.youtube.com\/user\/beaconelearning\/"],"description":"Great Learning is a leading global ed-tech company for professional training and higher education. It offers comprehensive, industry-relevant, hands-on learning programs across various business, technology, and interdisciplinary domains driving the digital economy. These programs are developed and offered in collaboration with the world's foremost academic institutions.","email":"info@mygreatlearning.com","legalName":"Great Learning Education Services Pvt. Ltd","foundingDate":"2013-11-29","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"1001","maxValue":"5000"}},{"@type":"Person","@id":"https:\/\/www.mygreatlearning.com\/blog\/#\/schema\/person\/6f993d1be4c584a335951e836f2656ad","name":"Great Learning Editorial Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2022\/02\/unnamed.webp","url":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2022\/02\/unnamed.webp","contentUrl":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2022\/02\/unnamed.webp","caption":"Great Learning Editorial Team"},"description":"The Great Learning Editorial Staff includes a dynamic team of subject matter experts, instructors, and education professionals who combine their deep industry knowledge with innovative teaching methods. Their mission is to provide learners with the skills and insights needed to excel in their careers, whether through upskilling, reskilling, or transitioning into new fields.","sameAs":["https:\/\/www.mygreatlearning.com\/","https:\/\/in.linkedin.com\/school\/great-learning\/","https:\/\/x.com\/https:\/\/twitter.com\/Great_Learning","https:\/\/www.youtube.com\/channel\/UCObs0kLIrDjX2LLSybqNaEA"],"award":["Best EdTech Company of the Year 2024","Education Economictimes Outstanding Education\/Edtech Solution Provider of the Year 2024","Leading E-learning Platform 2024"],"url":"https:\/\/www.mygreatlearning.com\/blog\/author\/greatlearning\/"}]}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"web-stories-poster-portrait":false,"web-stories-publisher-logo":false,"web-stories-thumbnail":false},"uagb_author_info":{"display_name":"Great Learning Editorial Team","author_link":"https:\/\/www.mygreatlearning.com\/blog\/author\/greatlearning\/"},"uagb_comment_info":0,"uagb_excerpt":"&larr; Previous Module 7: File Handling &amp; Error Handling Next &rarr; Statement Solution Python Exercise 7.2: Log Reader Log files are a common source of data in real-world applications. Write a program that reads a log file called server.log and counts how many lines contain the word \"ERROR\". Your program should: Create a file named&hellip;","_links":{"self":[{"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/pages\/117653","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/comments?post=117653"}],"version-history":[{"count":2,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/pages\/117653\/revisions"}],"predecessor-version":[{"id":117655,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/pages\/117653\/revisions\/117655"}],"up":[{"embeddable":true,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/pages\/114145"}],"wp:attachment":[{"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/media?parent=117653"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/categories?post=117653"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/tags?post=117653"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}