代码之家  ›  专栏  ›  技术社区  ›  Hiddenguy

从多个文件中保存特定数据

  •  1
  • Hiddenguy  · 技术社区  · 6 年前

    我有一个文件夹,其中存储了我的试衣模型中的文件 .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 回复  |  直到 6 年前
        1
  •  1
  •   bobrobbob    6 年前

    时间处理有点难看,也许会有人提出更干净的解决方案。但它还是会起作用的

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