Skip to content Skip to sidebar Skip to footer

Python : How Do I Get A New Column For Every File I Read?

Im trying to read 3 text files and combine them into a single output file. so far so good, the only problem is that I need to create columns for every file i read. right now I have

Solution 1:

Open input files one after another, collect data into the list of lists. Then, zip() the data and writer via csv writer with space as a delimiter:

#!/usr/bin/env pythonimport csv
import sys

usage = 'Usage: %s infile' % sys.argv[0]

data = []
for filename in sys.argv[1:]:
    with open(filename) as f:
        data.append([line.strip() for line in f])

data = zip(*data)
with open('outfil.txt', 'w') as f:
    writer = csv.writer(f, delimiter=" ")
    writer.writerows(data)

Assuming you have:

  • 1.txt with the following contents:

    1
    2
    3
    4
    5
    
  • 2.txt with the following contents:

    6
    7
    8
    9
    10
    

Then, if you save the code to test.py and run it as python test.py 1.txt 2.txt, in outfil.txt you will get:

1 6
2 7
3 8
4 9
5 10

Solution 2:

$ cat a
1
2
3
4
5
6
7
8
9
10

$ cat b
51
52
53
54
55
56
57
58
59
60


>>>import itertools>>>for (i,j) in itertools.izip(open('a'), open('b')):...print i.strip(), '---', j.strip()...
1 --- 51
2 --- 52
3 --- 53
4 --- 54
5 --- 55
6 --- 56
7 --- 57
8 --- 58
9 --- 59
10 --- 60


>>>

Post a Comment for "Python : How Do I Get A New Column For Every File I Read?"