Alan, Peter, et al: Thank you all very much! Staring at this problem for hours was driving me crazy and I am very appreciative for your guys' time in looking into my silly error -- I have thoroughly reviewed both the responses and it makes perfect sense (*sigh of relief*).
On Thu, Oct 2, 2014 at 6:08 PM, Peter Otten <__pete...@web.de> wrote: > John Doe wrote: > >> Hello List, >> I am in need of your assistance. I have a text file with random words >> in it. I want to write all the lines to a new file. Additionally, I am >> using Python 2.7 on Ubuntu 12.04: >> >> Here is my code: >> >> def loop_extract(): >> with open('words.txt', 'r') as f: >> for lines in f: > > The name `lines` is misleading, you are reading one line at a time. > >> #print lines (I confirmed that each line is successfully >> #printed) >> with open('export.txt', 'w') as outf: >> outf.write(lines) >> #outf.write(lines) >> #outf.write('{}\n'.format(lines)) >> #outf.write('{}\n'.format(line for line in lines)) >> >> >> For some reason, the second file only contains the last line from the >> original file -- I have tried multiple variations (.read, .readlines, >> .writelines, other examples preceded by comment from above and many >> more) and tried to use the module, fileinput, but I still get the same >> results. > > Every time the line > >> with open('export.txt', 'w') as outf: > > is executed the file "export.txt" is truncated: > > https://docs.python.org/dev/library/functions.html#open > > To avoid the loss of data open the file once, outside the loop: > > with open("words.txt") as infile, open("export.txt", "w") as outfile: > for line in infile: > outfile.write(line) > > >> I do understand there is another way to copy the file over, but to >> provide additional background information on my purpose -- I want to >> read a file and save successful regex matches to a file; exporting >> specific data. There doesn't appear to be anything wrong with my >> expression as it prints the expected results without failure. I then >> decided to just write the export function by itself in its basic form, >> per the code above, which the same behavior occurred; > > That is a good approach! Reduce the code until only the source of the > problem is left. > >> only copying the >> last line. I've googled for hours and, unfortunately, at loss. > > I do that too, but not "for hours" ;) > >> I want to read a file and save successful regex matches to a file; >> exporting specific data. > > An experienced user of Python might approach this scenario with a generator: > > def process_lines(infile): > for line in infile: > line = process(line) # your line processing > if meets_condition(line): # your filter condition > yield line > > with open("words.txt") as infile: > with open("export.txt", "w") as outfile: > outfile.writelines( > process_lines(infile)) > > > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > https://mail.python.org/mailman/listinfo/tutor _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor