|
Prev: A fix for OverflowError in 64bits platforms
Next: studieren und arbeiten im ausland Drogist Drogistin beruf ausland jobboerse oesterreich soziale arbeiten im ausland jobboerse hannover stellenangebote lehrer ausland beruf ausland Creative Director
From: Ben Keshet on 3 Jul 2008 11:02 I have a probably simple beginner's question - I have a script that I am currently able to print its output. instead, i want to write it into a file - I tried different versions of write() but might have gotten the syntax wrong. the variable I want to write is a line from a file I am reading: "... f = open('receptor.mol2', 'r') line = f.readline()[:-1] while '@<TRIPOS>ATOM' not in line: line = f.readline()[:-1] #print line print random_mol2 ...." e.g. I want to write to a file all the lines in 'receptor.mol2' up to the string "@<TRIPOS>ATOM" (one after the other). Can anyone please advice? On a related note - how do I read and write to a file that is not in the same directory? e.g how do I provide a pathway to an open command? Please remember that I am a very beginner in Python and programming - Thank you.
From: Bruno Desthuilliers on 3 Jul 2008 11:26 Ben Keshet a �crit : > I have a probably simple beginner's question - > > I have a script that I am currently able to print its output. instead, > i want to write it into a file - I tried different versions of write() > but might have gotten the syntax wrong. The syntax is: fileobj.write(something) Now since you don't say exactly what you tried *and what you got*, we can't help much more here. > the variable I want to write is > a line from a file I am reading: > > "... > f = open('receptor.mol2', 'r') > line = f.readline()[:-1] If you want to strip the newline characters, you'd better use line.strip() or line.lstrip() > while '@<TRIPOS>ATOM' not in line: > line = f.readline()[:-1] > #print line Also, there are simpler ways to iterate over a file: f = open('somefile.txt') for line in f: if '@<TRIPOS>ATOM' in line: break print line.lstrip() f.close() > print random_mol2 > ..." > > e.g. I want to write to a file all the lines in 'receptor.mol2' up to > the string "@<TRIPOS>ATOM" (one after the other). Can anyone please > advice? The simplest solution for a unix-like command-line program would be to redirect the standard out to this file, ie: # python myprog.py > destfile.txt But this may not fit your needs !-) The other simplest solution is to open the destination file in write (or append) mode and write to it: source = open('somefile.txt') dest = open('otherfile.txt', 'w') for line in source: if '@<TRIPOS>ATOM' in line: break # we don't strip here, since write doesn't append a newline dest.write(line) source.close() dest.close() > On a related note - how do I read and write to a file that is not in the > same directory? Give the full absolute or relative path. > e.g how do I provide a pathway to an open command? source = open('/full/absolute/path/to/my/file.txt') Note that the exact syntax for a path depends on your os (but the os.path module can take care of most specificities). The above example is for a posix system. On Windows, you'll probably have something like: source = open('C:/full/absolute/path/to/my/file.txt') HTH
From: Callie Bertsche on 3 Jul 2008 14:45 I have a closely related note. How do I write to a relative path with python? Example, source = open('/../../directory/subdirectory/file.extension') What am I missing?
From: Matthew Fitzgibbons on 3 Jul 2008 15:02
Callie Bertsche wrote: > I have a closely related note. How do I write to a relative path with > python? Example, > source = open('/../../directory/subdirectory/file.extension') > > What am I missing? > -- > http://mail.python.org/mailman/listinfo/python-list > Leave off the beginning slash. -Matt |