amr...@iisermohali.ac.in 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