How to handle file in Sage

630 views
Skip to first unread message

Santanu Sarkar

unread,
Oct 19, 2014, 7:53:35 AM10/19/14
to sage-support
I have a text file abc.txt in Desktop where  I have written  A=[1,2,3,4]. Is it possible
to call this array A from Sage notebook?

When I write the following in notebook,

 A1 = load("/Desktop/abc.txt")

getting

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_49.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("QTEgPSBsb2FkKCIvRGVza3RvcC9hYmMudHh0Iik="),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))
  File "", line 1, in <module>
    
  File "/tmp/tmpgD_ocu/___code___.py", line 2, in <module>
    exec compile(u'A1 = load("/Desktop/abc.txt")
  File "", line 1, in <module>
    
  File "sage_object.pyx", line 862, in sage.structure.sage_object.load (sage/structure/sage_object.c:9317)
IOError: [Errno 2] No such file or directory: '/Desktop/abc.txt.sobj'

Dominique Laurain

unread,
Oct 19, 2014, 10:38:02 AM10/19/14
to sage-s...@googlegroups.com
Try "relative path" in load argument: try A1 = load("./Desktop/abc.txt")  
with a dot just fefore first slash

PS : I don't use load() but import or preparse in my SAGE cells, for Python souce

William Stein

unread,
Oct 19, 2014, 3:02:51 PM10/19/14
to sage-support
On Sun, Oct 19, 2014 at 4:52 AM, Santanu Sarkar
<sarkar.sa...@gmail.com> wrote:
> I have a text file abc.txt in Desktop where I have written A=[1,2,3,4]. Is
> it possible
> to call this array A from Sage notebook?
>
> When I write the following in notebook,
>
> A1 = load("/Desktop/abc.txt")

You could do this:

exec preparse(open('/Desktop/abc.txt').read())

or name your file abc.sage and do

load('/Desktop/abc.sage')

in the notebook (maybe), or

%execfile /Desktop/abc.sage

on the command line. (That one has to use %execfile and %load doesn't
work continues to be a change that I am unhappy with.)

Published example (requires login still):

https://cloud.sagemath.com/projects/4a5f0542-5873-4eed-a85c-a18c706e8bcd/files/2014-10-19-115550-load/

-- William

>
> getting
>
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "_sage_input_49.py", line 10, in <module>
> exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8
> -*-\\n" +
> _support_.preparse_worksheet_cell(base64.b64decode("QTEgPSBsb2FkKCIvRGVza3RvcC9hYmMudHh0Iik="),globals())+"\\n");
> execfile(os.path.abspath("___code___.py"))
> File "", line 1, in <module>
>
> File "/tmp/tmpgD_ocu/___code___.py", line 2, in <module>
> exec compile(u'A1 = load("/Desktop/abc.txt")
> File "", line 1, in <module>
>
> File "sage_object.pyx", line 862, in sage.structure.sage_object.load
> (sage/structure/sage_object.c:9317)
> IOError: [Errno 2] No such file or directory: '/Desktop/abc.txt.sobj'
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "sage-support" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sage-support...@googlegroups.com.
> To post to this group, send email to sage-s...@googlegroups.com.
> Visit this group at http://groups.google.com/group/sage-support.
> For more options, visit https://groups.google.com/d/optout.



--
William Stein
Professor of Mathematics
University of Washington
http://wstein.org
Screen Shot 2014-10-19 at 12.01.55 PM.png

John Cremona

unread,
Oct 20, 2014, 4:20:30 AM10/20/14
to SAGE support
On 19 October 2014 20:02, William Stein <wst...@gmail.com> wrote:
> On Sun, Oct 19, 2014 at 4:52 AM, Santanu Sarkar
> <sarkar.sa...@gmail.com> wrote:
>> I have a text file abc.txt in Desktop where I have written A=[1,2,3,4]. Is
>> it possible
>> to call this array A from Sage notebook?
>>
>> When I write the following in notebook,
>>
>> A1 = load("/Desktop/abc.txt")
>
> You could do this:
>
> exec preparse(open('/Desktop/abc.txt').read())
>
> or name your file abc.sage and do
>
> load('/Desktop/abc.sage')
>
> in the notebook (maybe), or
>
> %execfile /Desktop/abc.sage
>
> on the command line. (That one has to use %execfile and %load doesn't
> work continues to be a change that I am unhappy with.)

%runfile abc.sage

works fine, that is what I use all the time. The extension has to be
sage or py (or pyx or spyx or m but the would be read / parsed
differently)

John

William Stein

unread,
Oct 20, 2014, 7:48:41 AM10/20/14
to sage-support


On Oct 20, 2014 1:20 AM, "John Cremona" <john.c...@gmail.com> wrote:
>
> On 19 October 2014 20:02, William Stein <wst...@gmail.com> wrote:
> > On Sun, Oct 19, 2014 at 4:52 AM, Santanu Sarkar
> > <sarkar.sa...@gmail.com> wrote:
> >> I have a text file abc.txt in Desktop where  I have written  A=[1,2,3,4]. Is
> >> it possible
> >> to call this array A from Sage notebook?
> >>
> >> When I write the following in notebook,
> >>
> >>  A1 = load("/Desktop/abc.txt")
> >
> > You could do this:
> >
> > exec preparse(open('/Desktop/abc.txt').read())
> >
> > or name your file abc.sage and do
> >
> > load('/Desktop/abc.sage')
> >
> > in the notebook (maybe), or
> >
> > %execfile /Desktop/abc.sage
> >
> > on the command line.  (That one has to use %execfile and %load doesn't
> > work continues to be a change that I am unhappy with.)
>
> %runfile abc.sage
>
> works fine, that is what I use all the time.  The extension has to be
> sage or py (or pyx or spyx or m but the would be read / parsed
> differently)

Thanks - I meant %runfile not %execfile.  I find it hard to remember, which is yet another reason I am against removal of the more memorable %load that we had for years.

kcrisman

unread,
Oct 21, 2014, 8:19:20 PM10/21/14
to sage-s...@googlegroups.com

> differently)

Thanks - I meant %runfile not %execfile.  I find it hard to remember, which is yet another reason I am against removal of the more memorable %load that we had for years.

>


Agreed, but this was semi-unavoidable because of the Ipython upgrade a while back, though, right?   

William Stein

unread,
Oct 21, 2014, 8:27:20 PM10/21/14
to sage-support
It was definitely not unavoidable.

-- William

Santanu Sarkar

unread,
Oct 27, 2014, 10:12:17 AM10/27/14
to sage-support
Thanks a lot. But I am getting these errors: 

A1=load("./Documents/program21.txt")


Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_4.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("QTE9bG9hZCgiLi9Eb2N1bWVudHMvcHJvZ3JhbTIxLnR4dCIp"),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))
  File "", line 1, in <module>
    
  File "/tmp/tmpYQU78_/___code___.py", line 2, in <module>
    exec compile(u'A1=load("./Documents/program21.txt")
  File "", line 1, in <module>
    
  File "sage_object.pyx", line 862, in sage.structure.sage_object.load (sage/structure/sage_object.c:9317)
IOError: [Errno 2] No such file or directory: './Documents/program21.txt.sobj'



--------------------------------------------------------------------------


exec preparse(open('/Documents/program21.txt').read())


Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_5.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("ZXhlYyBwcmVwYXJzZShvcGVuKCcvRG9jdW1lbnRzL3Byb2dyYW0yMS50eHQnKS5yZWFkKCkp"),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))
  File "", line 1, in <module>
    
  File "/tmp/tmpqrNaPI/___code___.py", line 2, in <module>
    exec compile(u"exec preparse(open('/Documents/program21.txt').read())" + '\n', '', 'single')
  File "", line 1, in <module>
    
IOError: [Errno 2] No such file or directory: '/Documents/program21.txt'

slelievre

unread,
Oct 27, 2014, 4:24:25 PM10/27/14
to sage-s...@googlegroups.com
'load' is expecting filenames with extension among

     .py, .sage, .sobj

and maybe a few others.

If the file name does not have an extension in that short list,
'load' will add the extension .sobj.

William Stein

unread,
Oct 27, 2014, 4:31:13 PM10/27/14
to sage-support
On Mon, Oct 27, 2014 at 1:24 PM, slelievre <samuel....@gmail.com> wrote:
> 'load' is expecting filenames with extension among
>
> .py, .sage, .sobj
>
> and maybe a few others.
>
> If the file name does not have an extension in that short list,
> 'load' will add the extension .sobj.
>

Yes, use Python's builtin open command:

A1 = open("./Documents/program21.txt").read()

Santanu Sarkar

unread,
Oct 28, 2014, 3:27:27 AM10/28/14
to sage-support
Thank you so much.
Reply all
Reply to author
Forward
0 new messages