【问题标题】:Create new file for each instance Python为每个实例 Python 创建新文件
【发布时间】:2014-02-04 03:59:26
【问题描述】:

我有一个带有 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, port A ; 11:02, 70, B 口]

文件名 "2" 和 :[11:00, 40, blink]

文件名 "3" 与 :[11:00, 30, front]

我对 python 很陌生,我很难找到参考指南。如果有人知道我可以寻找答案的好地方,我将不胜感激。

【问题讨论】:

  • “我对 python 很陌生,我很难找到参考指南”——不,你只是没有努力尝试。
  • 试一试,粘贴一些代码。社区很乐意帮助您改进代码。
  • @legoStormtroopr 真的有必要吗?如果您认为该问题不值得发布,请标记它,但不要抨击至少足够聪明能够做到这一点的人。
  • @PyNEwbie 如果他们表现出任何努力,我会更好,但是没有代码,简单搜索"Python write file" 就会出现几十个链接,这些链接至少可以帮助他们写一些代码。
  • 好吧,我不想和你开战。显然这个人是新手,所以我只是想知道为什么有必要讽刺看看@SunnyNanda 的回应 - 这是一个小世界,因为他们不知道规则而殴打某人看起来很卑鄙。此外,如果您回头看,您会发现当 SO 刚开始时,有很多与此类似的问题。随着它的发展,越来越多的人对新人越来越没有耐心。

标签: python text python-3.x split


【解决方案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()

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

在我刚开始的时候,我发现 Dive into 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()

【讨论】:

    猜你喜欢
    • 2014-05-20
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多