我正在编写一个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日期代理 而且我希望output.txt文件具有日期和代理的列表,但它为空
答案 0 :(得分:1)
您缺少写入文件的信息。尝试添加与此类似的内容,而不是最后三行:
with open('output.txt', mode='wt', encoding='utf-8') as f:
f.writelines(row)
答案 1 :(得分:0)
您一开始就做对了,但最后却没有再做。
要访问文件时,必须首先open
,而最后没有这样做。
因此,您应该将最后3行更改为类似的内容
f = open(filename, mode) # mode probably "w" or "a"
f.writelines(pieces_of_data)
f.close()