Angus Rodgers wrote:
[snip]
This sort of thing seems to work, in the interpreter (for an ASCII text file, named 'h071.txt', in the current directory):

stop = 3   # Tab stops every 3 characters
from types import StringType   # Is this awkwardness necessary?
detab = lambda s : StringType.expandtabs(s, stop)  # Or use def
f = open('h071.txt')   # Do some stuff to f, perhaps, and then:
f.seek(0)
print ''.join(map(detab, f.xreadlines()))
f.close()

stop = 3   # Tab stops every 3 characters
detab = lambda s: s.expandtabs(stop)
f = open('h071.txt')   # Do some stuff to f, perhaps, and then:
# f.seek(0) # Not necessary
print ''.join(map(detab, f.xreadlines()))
f.close()

Obviously, to turn this into a generally useful program, I need
to learn to write to a new file, and how to parcel up the Python
code, and write a script to apply the "detab" function to all the
files found by searching a Windows directory, and replace the old
files with the new ones; but, for the guts of the program, is this
a reasonable way to write the code to strip tabs from a text file?

For writing the output file, this seems to work in the interpreter:

g = open('temp.txt', 'w')
g.writelines(map(detab, f.xreadlines()))
g.close()

In practice, does this avoid creating the whole string in memory
at one time, as is done by using ''.join()? (I'll have to read up
on "opaque sequence objects", which have only been mentioned once
or twice in passing - another instance perhaps being an xrange()?)
Not that that matters much in practice (in this simple case), but
it seems elegant to avoid creating the whole output file at once.

OK, I'm just getting my feet wet, and I'll try not to ask too many
silly questions!

First impressions are: (1) Python seems both elegant and practical;
and (2) Beazley seems a pleasantly unfussy introduction for someone with at least a little programming experience in other languages.

STOP = 3  # Tab stops every 3 characters
in_file = open('h071.txt')
out_file = open('temp.txt', 'w')
for line in in_file:  # Iterates one line at a time
    out_file.write(line.expandtabs(STOP))
in_file.close()
out_file.close()
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to