"David" <ld...@gmx.net> wrote
Here is my latest try, which works:
# add " -d" to each line of a textfile
infile = open("step3", 'r')
outfile = open("pyout","a")
line = infile.readline() # Invokes readline() method on file
line is now a string representing a line in the file.
for i in line:
You are now iterating over every character in line
line2 = line[:-1] + " -d\n"
So you repeat this assignment for every character.
No harm done its the same every time. Just very inefficient!
outfile.write(line2), # trailing ',' omits newline character
But you are writing the same line for every character - did
you find lots of duplicate lines in the output?
line = infile.readline()
And now you reset line to the next line so invalidating some
of what I njust said. I doubt this actually works properly although
it may appear to!
The use of the for loop is much simpler, avoiding all the
readline confusion:
infile = open("step3", 'r')
outfile = open("pyout","a")
for line in infile: # no need for readline
outfile.write(line.rstrip() + " -d\n")
infile.close()
outfile.close()
print "done!"
That's all you need!
for loops reading direct from the file are ideally suited to this
kind of program and indeed any situation where you are
handling a fixed size input.
while loops are better for when you don't know where the
end will be or even if there will be an end!
HTH,
Alan G.
_______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor