comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Breaking files
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
Breaking files [message #70883] Thu, 13 May 2010 14:05 Go to next message
fgg is currently offline  fgg
Messages: 67
Registered: April 2010
Member
Hello,

I have a code that is designed to read and process text files with
this format:

=xxx
id = 1
a = ...
b = ...
c = ...

It starts by reading the data in using file_lines and a string array:

infile = '/path/filename'
n = file_lines(infile)
data = strarr(n)
openr, inunit, infile, /get_lun
readf, inunit, data

... and ends by exporting stuff to another text file.

Now I need to deal with input text files that have a slightly
different format:

=xxx
id = 1
a = ...
b = ...
c = ...
=xxx
id = 2
a = ...
b = ...
c = ...
=xxx
id = 3
a = ...
b = ...
c = ...

They are just multiple files appended together. I was wondering if
there is a simple way of breaking this new big file into multiple
files with the old format so I don't have to change my code
considerably (maybe using the "=xxx" lines to indicate where each file
starts).

Sorry if this is too obvious. I'm new to IDL.

Thank you.
Re: Breaking files [message #70983 is a reply to message #70883] Mon, 17 May 2010 11:37 Go to previous message
fgg is currently offline  fgg
Messages: 67
Registered: April 2010
Member
> All you do is pick out the data you want.
>
> these = [where(stregex(data_array,'=xxx',/
> boolean),nthese),n_elements(data_array)-1]
> for i=0L,nthese-1 do begin
>   these_data = data_array[these[i]:these[i+1]]
>   ;operate on these_data
>   ...
> endfor

This is all I needed to finish the script! Thank you, Gray.
Re: Breaking files [message #71013 is a reply to message #70883] Fri, 14 May 2010 14:18 Go to previous message
Gray is currently offline  Gray
Messages: 253
Registered: February 2010
Senior Member
On May 14, 4:31 pm, fgg <fabioguimaraesgoncal...@gmail.com> wrote:
> Thanks for the suggestions. I can use WHERE to flag the those lines...
> I'm just not really sure how to create a loop to run the entire script
> for the first block of lines, then for the second and so one.
>
> I use a Mac so I probably have the split utility. I'll take a look.
> Thanks!

All you do is pick out the data you want.

these = [where(stregex(data_array,'=xxx',/
boolean),nthese),n_elements(data_array)-1]
for i=0L,nthese-1 do begin
these_data = data_array[these[i]:these[i+1]]
;operate on these_data
...
endfor
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Re: Keyword TNAME not allowed in call to: DATATYPE
Next Topic: Map Projection Question

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Wed Oct 08 15:17:41 PDT 2025

Total time taken to generate the page: 0.00559 seconds