Сохранение определенных данных из многих файлов - PullRequest
0 голосов
/ 07 июня 2018

У меня есть папка, в которой хранятся файлы из моей подходящей модели в формате .txt.

Мой вопрос здесь состоит в том, как написать цикл, который возьмет, например, p1_cen 7.65782003 из этого файла и добавит его встолбец в файле .csv?Еще одна вещь, которая связана с моим вопросом, состоит в том, что количество этих файлов равно 288, потому что я храню данные по 5 минут каждый день.И цикл, который мне нужен, состоит в том, чтобы взять из этих 288 файлов определенные данные, например, как указано выше. Есть ли у вас какие-либо идеи, как это сделать?

На данный момент у меня есть этот код, который записывает данные в .txt файлы из моей модели lmfit.

  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

ОБНОВЛЕНИЕ !!!

Так что код из @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 голосов
/ 07 июня 2018

немного уродливо по времени, может быть, кто-то придет с более чистым решением.но все равно должно работать

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())
...