在多个CSV文件中搜索特定的行,并保存特定的列以及日期信息

时间:2018-11-18 22:21:25

标签: python csv

我有一个充满CSV文件的目录,其中包含有关虚拟机使用的资源的信息。这些文件名为“ VM资源-2018-06-01 070001.csv”等,包含约400行。

我目前仅对提取一台服务器(称为MAILSERVER01)以及条目VMName(索引0),Total Storage (GB)(索引8)和文件中的日期感兴趣。名称。

我可以使用类似的东西:

import os
import glob
import pandas as pd
import numpy as np

path = "my_dir_full_path"
allFiles = glob.glob(os.path.join(path,"*.csv"))

但这不会给我我需要的日期字段。我希望最终能够将此信息插入到时间序列中,以预测服务器(全部400台)何时可能需要磁盘扩展,但临时需要创建时间序列数据。

我正在尝试获取如下所示的CSV输出文件:

VMName,Total Storage (GB),Date
MAILSERVER01,600,2018-06-01
MAILSERVER01,600,2018-06-02
MAILSERVER01,610,2018-06-03

1 个答案:

答案 0 :(得分:1)

这可以使用内置的CSV库完成,如下所示:

top

为您提供一个from operator import itemgetter import csv import glob req_fields = itemgetter(0, 8) # Used to extract the two required fields from a list header = ["VMName", "Total Storage (GB)", "Date"] with open('output.csv', 'w', newline='') as f_output: csv_output = csv.writer(f_output) csv_output.writerow(header) for filename in glob.glob(r'VM Resources*.csv'): date = filename.split()[3] # split on spaces and take the 4th part with open(filename, newline='') as f_input: csv_input = csv.reader(f_input) header = next(csv_input) # skip the header for row in csv_input: output_row = list(req_fields(row)) + [date] csv_output.writerow(output_row) 文件,看起来像这样:

output.csv

在Python 3.6.7上测试