我对python和编码一般都很陌生,所以对于任何愚蠢的问题都提前抱歉。我的程序需要根据关键字'MYLOG'将现有的日志文件分成几个* .csv文件(run1,.csv,run2.csv,...)。如果出现关键字,则应开始将两个所需列复制到新文件中,直到关键字再次出现。完成后,需要有与关键字一样多的csv文件。如何使用python将日志文件拆分为多个csv文件
53.2436 EXP MYLOG: START RUN specs/run03_block_order.csv
53.2589 EXP TextStim: autoDraw = None
53.2589 EXP TextStim: autoDraw = None
55.2257 DATA Keypress: t
57.2412 DATA Keypress: t
59.2406 DATA Keypress: t
61.2400 DATA Keypress: t
63.2393 DATA Keypress: t
...
89.2314 EXP MYLOG: START BLOCK scene [specs/run03_block01.csv]
89.2336 EXP Imported specs/run03_block01.csv as conditions
89.2339 EXP Created sequence: sequential, trialTypes=9
...
[编辑]:每个文件输出(运行* .CSV)应该是这样的:
onset type
53.2436 EXP
53.2589 EXP
53.2589 EXP
55.2257 DATA
57.2412 DATA
59.2406 DATA
61.2400 DATA
...
该程序创建尽可能多的运行*。 csv根据需要,但我不能在我的新文件中存储所需的列。完成后,我所得到的都是空的csv文件。如果我将计数器变量转换为== 1,它会创建一个包含所需列的大文件。
再次感谢!
import csv
QUERY = 'MYLOG'
with open('localizer.log', 'rt') as log_input:
i = 0
for line in log_input:
if QUERY in line:
i = i + 1
with open('run' + str(i) + '.csv', 'w') as output:
reader = csv.reader(log_input, delimiter = ' ')
writer = csv.writer(output)
content_column_A = [0]
content_column_B = [1]
for row in reader:
content_A = list(row[j] for j in content_column_A)
content_B = list(row[k] for k in content_column_B)
writer.writerow(content_A)
writer.writerow(content_B)
请描述每个新文件应该是什么样子。 –
提供以下信息将会很有用:1.预期的输出,以及2.实际的输出或出错的地方。另外,'counter'变量似乎与这段代码无关,可能会删除,以便更容易实现。 – Geekfish