python - python中的读取和格式化问题

标签 python linux bash

该网站的新手,希望我的问题没有遗漏很多细节或过于含糊。本质上,我正在运行一个 netbackup 脚本,以创建一个新文件:

subprocess.call('/usr/openv/netbackup/bin/goodies/available_media > /var/log/nbu/available_media' + adate, shell=True)

The output of this file looks like this

然后我想对其进行格式化并使用 out.write 将其输入到另一个文件中,该文件指定池名称,例如“Auth Pool”、“Web Pool”等。使用 count 找出有多少磁带处于每个池的“可用”“完整”“卡住”。

#Pool #Full #Avail #Frozen
AUTH  100   5      23

到目前为止我所管理的是以下内容:

from datetime import datetime
import subprocess
import os
import sys

date = datetime.now()
adate = '%s%s%s' % (date.year, date.month, date.day)

subprocess.call('/usr/openv/netbackup/bin/goodies/available_media >    /var/log/nbu/available_media' + adate, shell=True)

log = open('/var/log/nbu/available_media' + adate, 'r')
    text = log.read()
    auth = text.split('Auth_Offsite', 1)[0]
    notapes = auth.count('AVAILABLE')

目前,我的知识限制我只能使用拆分计算第一个池的可用磁带。我是 python 的新手,所以请保持温柔:P 非常感谢所有帮助。

最佳答案

假设您的日志文件是制表符分隔的,这里有一个快速而粗略的方法,它应该可以大致完成您想要的操作。如果您是 Python 的新手,有些函数对您来说可能是新的,但它至少应该让您了解您可能想要谷歌搜索的内容。

log = open('/var/log/nbu/available_media' + adate, 'r')

# Splits on newline chars, skips the titles and ----- lines
lines = log.readlines()[2:] 

# Break up each line by field
lines = [line.strip().split('\t') for line in lines]

# Going to form a dictionary mapping pool names to dictionaries of tape state counts
states_dict = {}
all_states = set()
for line in lines:
    if len(line) == 1:
        current_pool = line[0]
        states_dict[current_pool] = {}
    elif len(line) > 1:
        state = line[-1]
        states_dict[current_pool][state] = states_dict[current_pool].setdefault(state, 0) + 1
        all_states.add(state)

all_states = sorted(list(all_states))

# write output
with open('output_file_name.txt','wb') as outfile:
    outfile.write('Pool\t' + '\t'.join(all_states) + '\n')
    for pool in states_dict:
        outfile.write(pool)
        for state in all_states:
            outfile.write('\t' + states_dict[pool].setdefault(state, 0))
        outfile.write('\n')

关于python - python中的读取和格式化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33551880/

相关文章:

bash - 如何使用 FFMPEG 将输出和日志文件通过管道传输到 S3

python - 使用Python ffmpeg将音频文件和所有帧图片加入视频格式

python - 求解具有 f (x) 数值但没有解析表达式的颂歌 y'=f (x)

python - 如何使代码返回 [True, False] 列表?

python - 如何使用 mpl_disconnect() 重新获得控制权以结束 matplotlib 中的自定义 event_handling

linux - Mininet Ping 问题

linux - 在 Linux 中检索目录下的特定文件

linux - 如何将 vi 编辑器与 google 文档集成

linux - 使用 zsh 时如何自动启 Action 业

bash - 将命令的输出结果存储到数组中