簡體   English   中英

Python設置輸出文件為空

[英]Python set output file is empty

我正在編寫一個Python腳本來讀取文件,逐行讀取該文件,並通過用戶命令行參數將數據從該文件解析到另一個文本文件。 現在,我能夠逐行讀取輸入文件,並通過命令行參數解析出數據。 但是,我嘗試寫入的輸出文件為空(它不滿足我要解析的數據)。

temp.log包含:

06 May 19 03:40:35 3 abCodeClearTrap Error Clear Trap (agent: 12367a12, 
chassis:12367a12, ErrIdText: ERROR ID TEXT, csssi: EXTIFG, clearedID: 
0x089088394)
06 May 19 03:44:35 3 abCodeErrorTrap Error Trap (agent: 12368a15, chassis: 
12368a15, ErrIdText: Skip this item, csssi: SSRSSR, clearedID: 
0x089088394)

到目前為止,我的代碼:

import re, sys

with open('temp.log') as f:
    lines = f.readlines()

output_file = open ('output.txt', 'w')

data = []
for line in lines:
   date = re.match(r'\d{2} \w+ \d{2}', line).group()    
   time = line.split()[3]
   ids = line.split()[4]
   row = [date, time, ids]

   if 'agent' in sys.argv:
       try:
          agent = re.search(r'agent:\s(.*?),', line).group()
          row.append(agent)
      except:
          agent = 'agent:'
  if 'err' in sys.argv:
      try:
          errID = re.search(r'ErrIdText:\s(.*?),', line).group()
          row.append(errID)
      except:
          errID = 'ErrIdText:'
  if 'clear' in sys.argv:
      try:
          clear = re.search(r'clearedID:\s(.*?)\)', line).group()
          row.append(clear)
      except:
          clear = 'clearedID:'

  data.append(row)
  output_file.writelines(row)

  for row in data:
  print(row)

  output_file.close()

我期望將輸出寫入到名為“ output.txt”的文件中,但是該文件不是由代碼生成的。

因此,用戶將運行命令行參數python export.py date agent,並且我期望output.txt文件具有日期和代理列表,但它為空

您缺少寫入文件的信息。 嘗試添加與此類似的內容,而不是最后三行:

with open('output.txt', mode='wt', encoding='utf-8') as f:
    f.writelines(row)

您一開始就做對了,但最后卻沒有再做。 當您要訪問文件時,必須首先open它,但最后沒有這樣做。

因此,您應該將最后三行更改為類似

f = open(filename, mode) # mode probably "w" or "a"
f.writelines(pieces_of_data)
f.close()

暫無
暫無

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

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