我有一个文件夹,其中商店以.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)
我得到类似的东西,这几乎是完美的:
答案 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())