Lanky Nibs wrote: > I have a large volume of files to change so I need to > automate the search and replace. I'll be replacing > bits of text with other bits of text. This is working > for now but I'd like to know how a real programmer > would do it. The hard coded strings will eventually > come from a list. All sugestions welcome and > appreciated. > > #read all file lines into list and close > allLines = fh.readlines() > fh.close() > > #use split and join to replace a unique item > chunk = allLines[0] > Is the data to be replaced always in the first line? You only look at the first line. > splitChunk = chunk.split('xVAR1x') > newChunk = 'my shoes fell off'.join(splitChunk) > This is a very awkward way to replace part of a string. Try newChunk = chunk.replace('xVAR1x', 'my shoes fell off') > #write to a file > file = open('test.html', 'w') > for eachLine in newChunk: > print 'writing line in text file' > file.write(eachLine) > file.close() > Are you sure this is doing what you want? newChunk is just the first line of the file, iterating over it gives you each character from the file.
If I wanted to replace every instance of 'xVAR1x' in a single file with 'my shoes fell off', I would do it like this: f = open(...) data = f.read() f.close() data = data.replace('xVAR1x', 'my shoes fell off') f = open(..., 'w') f.write(data) f.close() Variations are possible depending on exactly what you want to do, but this is the basic idea. No need to read a line at a time unless you actually need to process by lines, or if the file is too big to fit in memory (in which case your solution still needs a rewrite). Kent > > __________________________________________________ > Do You Yahoo!? > Tired of spam? Yahoo! Mail has the best spam protection around > http://mail.yahoo.com > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > > > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor