Forwarding to the list
---------- Forwarded message ---------- From: Bala subramanian <[email protected]> Date: Tue, Mar 24, 2009 at 11:23 AM Subject: Re: [Tutor] swapping lines between files To: Kent Johnson <[email protected]> Hai Kent, Thank you. I tried the same zip with a list and a file, instead of just two files. It works fine. But now i am stuck in overwriting the input file with value. What i want to do ? I have 3 files file 1 file2 file3 1 20.22 22 22.22 56 66.77 2 21.24 20 34.56 44 66.55 3 33.33 22 35.77 22 45.66 Now i have a list all =[ [5,10,13], [44,56,77], [55,67,78]] file 1 file 2 file 3 5 20.22 44 22.22 55 66.77 10 21.24 56 34.56 67 66.55 13 33.33 77 35.77 78 45.66 I am replacing the first position in file with the values in the list. The following worked for me, rmsd=argv[1:] for n in range(3): infile=open(rmsd[n]) for x, y in zip(all[n],infile): yitem=y.split() yitem[0]=str(x) print yitem But now i simply want to overwrite the input files. I am stuck here because when i create a filelist like the following, file_list=FileInput(rmsd,inplace=1) print file_list <fileinput.FileInput instance at 0x85bdb6c> Now file_list is not a list to loop but a fileinput object, so i am stuck in looping this and my list all simultaneously. Bala On Mon, Mar 23, 2009 at 6:42 PM, Kent Johnson <[email protected]> wrote: > > On Mon, Mar 23, 2009 at 12:39 PM, Bala subramanian > <[email protected]> wrote: > > Dear Friends, > > > > Thanks for your replies for my previous mail. > > > > I have two files as follows. > > > > file 1 file2 > > 200 1 3.55 > > 210 2 4.55 > > 242 3 1.22 > > 248 4 3.10 > > 256 5 1.11 > > > > Now i have to replace 1,2,3,4,5 in file 2 with 200,210,242,248,256 in file1. > > Simply replacing position 1 in file2 with values in file1. Can i do it with > > zip function, if yes how to do it. Here both files contain same number of > > lines. > > You can use zip() to combine the lines of the files. itertools.izip() > might be a better choice because it doesn't read the entire file at > once. Something like this (untested): > > from itertools import izip > file2 = open(...) > out = open(..., 'w') # output file > for line1, line2 in izip(file1, file2): > # now create a line that merges the two and write it > line1 = line1.strip() # remove newline > line2items = line2.split() > line2items[0] = line1 > newLine = '\t'.join(line2items) > out.write(newLine) > out.write('\n') > out.close() > > Kent _______________________________________________ Tutor maillist - [email protected] http://mail.python.org/mailman/listinfo/tutor
