Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2013

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Reading a file in reverse order --- How?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg130445] Re: Reading a file in reverse order --- How?
  • From: plank.in.sequim at gmail.com
  • Date: Thu, 11 Apr 2013 04:14:09 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-newout@smc.vnet.net
  • Delivered-to: mathgroup-newsend@smc.vnet.net
  • References: <kfi2i3$d0p$1@smc.vnet.net>

One possibility is to keep track of the stream positions for each entry when writing out and then SetStreamPosition to those positions in reverse order when reading each record back in.  You ought to have enough memory for a 10K integer array.  Argh!  I can't seem to get Mathematica to put out a nice text for pasting.  Will MathML work?  Anyway, hopefully you can make some sense of this.  It's not that big a change from your original code.

fname="testfile";
entryLocs={};
Print["Input"];
strm=OpenWrite[fname];
n=3;(*In general,n could be very large*)For[k=1,k<=n,k++,(*Create list on each pass through this loop...*)POt={{k,k+1},{k+2,k+3}};
entryLocs=Append[entryLocs,StreamPosition[strm]];
Print[POt];(*Save list to a file*)Write[strm,POt];];
Close[strm];
(*Other processing performed...*)
(*Open file with lists*)
strm=OpenRead[fname];
(*Process,sequentially,each list that was saved*)
For[i=1,i<=n,i++,
SetStreamPosition[strm,entryLocs[[n-i+1]]];
PIn=Read[strm];

Print[PIn];(*Process PIn...*)];

Close[strm];




  • Prev by Date: "Programming With Mathematica" Exercise help
  • Next by Date: Re: rayshade POV Export help asked
  • Previous by thread: Re: Reading a file in reverse order --- How?
  • Next by thread: Timing puzzle