On Thu, Sep 15, 2011 at 4:56 PM, Andrew Francis <[email protected]> wrote:
> Hi all,
>
> I'm new to this group; thanks for having me.
>
> I have generated a large number of text files (several lots of 81
> files) with the intention of reading them back into another sage
> program (via the command line). The text filenames were generated by
> the line
>
> outputfilename="Dropbox/simdata_g1%sk%sc%seps%s.sage"%
> (g1int,kint,gridc,grideps)
>
> so that the file names have a number of variables, and a typical file
> is of form simdata_g18k1c2eps3.sage. No problem this far.
>
> The files are of a form that should be sage-readable, for instance one
> line is
> Lpeak = 0.00101546953017314
>
> I now want to use these files to generate some further output, reading
> them into a loop as follows:
>
> def grid_plot(grid,gamma,kappa):
> for gridc in [0..8]:
> for grideps in [0..8]:
> load 'Dropbox/SAGE-outputs-5genes/gamma5kappa3/
> simdata_g15k3c%seps%s.sage'%(cstr,epsstr)
> blah blah
>
> I am hoping to extract and use values such as that of Lpeak above.
>
> However while I am able to load a file for particular values of the
> parameters *outside* the def statement (using exactly the same load
> statement), I have been unable to make sage run through my files and
> extract the values inside them. The error I get is:
>
> ValueError: argument (="'Dropbox/SAGE-outputs-5genes/gamma5kappa3/
> simdata_g15k3c%seps%s.sage'%(cstr,epsstr)") to load or attach must
> have extension py, pyx, sage, spyx, or m
>
> Clearly the file does have a correct extension (.sage), as the same
> command works fine outside the def statement. So is there a problem
> loading files generically inside a function definition? Is there some
> other way around this?
>
> Thanks,
> Andrew
>
> --
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/sage-support
> URL: http://www.sagemath.org
>
Hi,
The following works -
>>> from sage.all import load, Integer
>>> import os
>>> for i in range(10):
... os.system('echo a = %d > %d.sage' %(i,i)) # generating files
0.sage, 1.sage, etc
...
>>> for i in range(10):
... load('%d.sage' %i)
... print a
This gives the expected output. By the way I don't see your filename
changing inside the loop.
Rajeev
--
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sage-support
URL: http://www.sagemath.org