Python:根据行数创建文件块

时间:2017-06-20 13:28:33

标签: python

我有一个包含以下视图的文件:

ID Num1 Num2
1   1   2
1   2   4
1   3   6
2   4   8
2   5   10
3   6   12
3   7   14
3   8   16
3   9   18
4   10  20
5   11  22
5   12  24

我想根据每个文件不应包含3个以上ID值的条件将文件拆分为多个文件。所以,在这种情况下,他们将两个输出文件。第一个文件应该有输出:

1   1   2
1   2   4
1   3   6
2   4   8
2   5   10
3   6   12
3   7   14
3   8   16
3   9   18

虽然第二个文件应如下所示:

4   10  20
5   11  22
5   12  24

但它会生成三个文件,第二个文件为空文件,第三个文件包含ID = 5的值。

以下代码是用python编写的:

infile=open("Input.txt","r")
outfile=open("Output1.txt","w")

list_value=[] # Storing the values of 1st column
file=2 # Naming the file
value="" # 1st column value
for line in infile:
    value=line.split()[0] 
    if value in list_value:
        outfile.write(line)
    else:
        list_value.append(value)
        if (len(list_value)) < 4:
            outfile.write(line)
        elif (len(list_value))==4:
            outfile=open("Output"+str(file)+".txt","w")
            outfile.write(line)
            file=file+1
            list_value=[]

代码仅适用于第一个序列,但最终无法正常工作。

任何linux命令都可以提供帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

代码中的最后一行应为

ZonedDateTime z = now.atZone(ZoneId.of("America/Sao_Paulo"));
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss xxx");
System.out.println(fmt.format(z)); // 20/06/2017 10:28:39 -03:00

而不是

list_value = [value]

因为您在list_value = [] 子句中打开的文件已包含ID elif