簡體   English   中英

將 output 寫入 python 中的單個 csv 文件

[英]Writing output to a single csv file in python

我是編程新手。 對於核心開發人員來說,可能要求很簡單。

我有 5.log 文件,它們是數據庫的日志文件。 在這里,我想讀取這些所有文件,檢查這些文件中的錯誤和成功消息,並將錯誤和成功消息連同我讀取的文件名一起寫入單個 csv 文件。

import glob

file_list = glob.glob('C:\\Users\\Rahul\\AppData\\Roaming\\JetBrains\\PyCharmCE2021.3\\*.log')
file_out = open('error.csv', "a") #creating a csv file

for file in file_list:
    file_in = open(file, "r").readlines()  
    count = 0
    for line in file_in: # Loop every line
        if 'ERROR' in line: # Search for ERROR in line
            count += 1
            file_out.write(str(count) +"error.csv"+ "," + line + "\n")    #writing csv file
        elif 'SUCCESS' in line: # Search for SUCCESS in line
            print(line) # Print line
file_out.close()

我想將如下所示的文件 output 寫入單個 CSV 文件

Filename:test.log Error: Compilation error
Filename:test2.log Success: It is successful 

有什么幫助或建議嗎?

這是一個建議。 標准庫中有一個名為fileinput的整潔模塊,它允許您輕松地連續讀取多個文件,還可以讓您訪問文件名、行號等。嘗試類似以下的操作,看看它是否符合您的需要:

import glob
import fileinput

file_list = glob.glob(...)

with fileinput.input(file_list) as fin,\
     open("error.csv", "a") as fout:
    out = "Filename: {}, Line: {}, {}: {}\n"
    write = False
    for line in fin:
        line = line.rstrip()
        line_folded = line.casefold()
        if "error" in line_folded:
            write, var = True, "Error"
        elif "success" in line_folded:
            write, var = True, "Success"
        if write:
            fout.write(out.format(fin.filename(), fin.filelineno(), var, line))
            write = False

有點不清楚為什么要編寫 CSV 文件:您的 output 看起來不像是 csv 格式的?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM