保存许多文件中的特定数据

时间:2018-06-07 17:47:42

标签: python-2.7 file loops save directory

我有一个文件夹,其中商店以.txt格式从我的拟合模型中归档。

我的问题是如何编写一个循环,从该文件中获取p1_cen 7.65782003并将其附加到.csv文件中的列? 我的另一个问题是这些文件的数量等于288,因为我每天存储5分钟长的数据。我需要的一个循环就是从那些288个文件中获取一个特定的数据,例如上面的内容,你有什么想法怎么做?

目前,我有这段代码,它将数据写入我的lmfit模型的.txt文件中。

  with open('S:\Doc\Python\Results\DecompositionBx ' + "{0}".format(Station) + "{0}{1}".format(Start_time_hours_format, Start_time_minutes_format) + ".txt", 'w') as fh:
        fh.write(result.fit_report(show_correl=False))

顺便说一下。我的文件是相应命名的

DecompositionBxHylaty0000
...
DecompositionBxHylaty2355

UPDATE !!!

所以@bobrobbob的代码可以工作:

import csv
from datetime import timedelta

data = []

for i in range(288):
    skip = i*timedelta(minutes=5)
    hours, minutes, _ = str(skip).split(':')
    filename = "S:\Dok\Python\Results\DecompositionBx Hylaty%02d%02d.txt" % (int(hours), int(minutes))
    with open(filename) as f:
        lines = f.readlines()
    for line in lines:
        if line.startswith('    p1_cen'):
            data.append(line.split('+')[0])
            break

with open('S:\Dok\Python\Results\data.csv', 'w') as f:
    writer = csv.writer(f)
    for line in data:
        writer.writerow(line)

我得到类似的东西,这几乎是完美的:

enter image description here

1 个答案:

答案 0 :(得分:1)

时间处理有点难看,也许有人会带来更清洁的解决方案。但它应该工作

import csv
from datetime import timedelta

data = []

for i in range(288):
    skip = i*timedelta(minutes=5)
    hours, minutes, _ = str(skip).split(':')
    filename = "DecompositionBxHylaty%02d%02d" % (int(hours), int(minutes))
    with open(filename) as f:
        lines = f.readlines()
    for line in lines:
        if line.startswith('p1_cen'):
            data.append(line.split('+')[0].strip())
            break

with open('data.csv', 'w', newline='') as f:
    writer = csv.writer(f, delimiter=' ')
    for line in data:
        writer.writerow(line.split())