为每个实例Python创建新文件

时间:2014-02-04 03:59:27

标签: python text python-3.x split

我有一个带有ID号的文件以及记录的事件的详细信息。 (时间,温度,位置)

我希望python将所有相同的i.d.分组到他们自己的唯一文件中,存储每条记录中的所有偶数细节。

也就是说,遍历每条记录,如果id没有日志文件,则创建一个,如果它将新记录记录到该id的文件中。

示例输入

1, 11:00, 70, port A
1, 11:02, 70, port B
2, 11:00, 40, blink
3, 11:00, 30, front

期望的输出

文件名“1”:[11:00,70,A口;                      11:02,70,B口

文件名“2”:[11:00,40,blink]

文件名“3”:[11:00,30,前]

我是python的新手,我找不到参考指南。如果有人知道我可以寻找答案的好地方,我会很感激。

1 个答案:

答案 0 :(得分:-1)

这非常简单 - 假设您的文件与您描述的一样,但我在Python 2.7中,所以我不确定它们之间的区别是什么。

all_lines = open('c:\\path_to_my_file.txt').readlines()
from collections import defaultdict
my_classified_lines = defaultdict(list)
for line in all_lines:
    data_type, value1,value2,value3 = line.split(',')
    my_classified_lines[data_type).append(','.join([value1,value2,value3])


for data_type in my_classified_lines:
    outref = open('c:\\directory\\' + data_type + '.txt', 'w')
    outref.writelines(my_classified_lines[data_type])
    outref.close()

要理解这一点,你需要了解字典 - 数据的有用容器, 文件操作 和循环

我在启动时发现潜入Python是一个很好的资源

在查看你的输出后,我可能没有你想要的东西就像

11:00,70,A口 11:02,70,B口

我认为你说你想要一个像分号对象这样的列表作为分隔符,我建议你要求一个带括号的字符串。如果您的输出真的与您描述的一样,那么试试这个

for data_type in my_classified_lines:
    outref = open('c:\\directory\\' + data_type + '.txt', 'w')
    out_list =[ ';'.join([item for item in my_classified_lines[data_type'])]
    outref.writelines(outlist) # should be only one line
    outref.close()