[email protected] wrote:
> I tried to join these two files together using command.......
>
> from itertools import izip
> from os.path import exists
>
> def parafiles(*files):
> vec = (open(f) for f in files if exists(f))
> data = izip(*vec)
> [f.close() for f in vec]
> return data
>
> for data in parafiles('/home/amrita/alachems/chem1.txt',
> '/home/amrita/secstr/secstr.txt'):
> print ' '.join(d.strip() for d in data)
parafiles has a bug: vec is a generator and hence cannot be run twice.
Therefore the odd [f.close()...] list comprehension (don't use a list comp
if you don't care about the result!) has no effect.
If you change vec into a list you will be hit by another problem -- the for
loop trying to operate on closed files. While the correct approach probably
involves a contextlib.contextmanager I recommend that you concentrate on
your real problem and keep parafiles() simple:
def parafiles(*files):
open_files = (open(f) for f in files if exits(f))
return izip(*open_files)
> it just joined the column of two files.
Can you make an effort to express clearly what you want, preferrably with a
simple and unambiguous example?
Please keep the line widths below the threshold of 78 characters to avoid
messing it up on its way to the reader.
Peter
--
http://mail.python.org/mailman/listinfo/python-list