Text files read multiple files into single file, and then recreate the multiple files

M.E.Farmer mefjr75 at hotmail.com
Sun Feb 13 12:44:35 EST 2005


googlinggoogler at hotmail.com wrote:
> Hiya,
>
> The title says it all really, but im a newbie to python sort of. I
can
> read in files and write files no probs.
>
> But what I want to do is read in a couple of files and output them to
> one single file, but then be able to take this one single file and
> recreate the files I put into it.
>
> Im really at a loss as to how I go about recovering the files?
> obviously if i scan for a string that specifys the start and end of
> each file, theres the chance that the file might contain this term to
> which would split the files into unwanted chucks of file, which
wouldnt
> be wanted.
>
> Any ideas? code snippets?
>
> Im very grateful!
Ok, for the seperating of the records you could something like this.
This function returns a generator that can iterate thru your records.
Py> #Single file multi-record seperator
... def recordbreaker(record, seperator='#NextRecord#'):
...   seplen = len(seperator)
...   rec = open(record ,'rb')
...   a =[]
...   for line in rec:
...       sep = line.find(seperator)
...       if  sep != -1:
...           a.append(line[:sep])
...           out = ''.join(a)
...           a =[]
...           a.append(line[sep+seplen:].lstrip())
...           yield out
...       else:
...           a.append(line)
...   if a:
...       yield ''.join(a)
...   rec.close()
...
Py> # to use it directly
Py> records = recordbreaker('myrecords.txt')
Py> first_record = records.next()
Py> second_record = records.next()
Py> # or you can do this
Py> for record in records:
Py>     print record

Getting them in a single file is easy, and will be an excercise left to
the reader.
The fileinput module is your friend it is in the standard library.
Be sure to check it out if you haven't already.
hth,
M.E.Farmer




More information about the Python-list mailing list