2016-09-24 5 views
0

Я нахожусь на Mac с OS 10.11.6, и я изучаю интерфейс ноутбука для Sage 7.2. В начале, на листе Sage, я создал файл .txt, содержащий строку [1, 2, 3] и сохранил ее. Я могу открыть текстовый файл напрямую и проверить его содержимое, просто нажав на него, но я еще не могу сделать это в Sage.Шаги для загрузки TXT-файла и преобразования строк в него к полезным данным в ноутбуке Sage

Я хотел бы иметь возможность открыть его и преобразовать строку в полезный объект Sage. Я был бы признателен за откровенные инструкции, не предполагая ничего общего с моим фоном Мудреца. Спасибо.

Примечание: Процедура делать то, что я просто спросил в документации Sage в разделе «Сохранение и загрузка отдельных объектов» не работает в моей среде я A = [1, 2, 3] (спецификации выше.). Затем я делаю save(A, 'A'), а Sage возвращает горячую ссылку для A.sobj. Затем я нажал кнопку «Сохранить и закрыть». Затем я нажал «выйти». Затем я запишусь и перейду на рабочий лист, где я сделал шаги, которые я только что описал. Я делаю A = load('A'). Вот что говорит Сейдж:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "_sage_input_3.py", line 10, in <module> 
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("QSA9IGxvYWQoJ0EnKQ=="),globals())+"\\n"); execfile(os.path.abspath("___code___.py")) 
    File "", line 1, in <module> 

    File "/private/var/folders/7n/t9k4hfyn44s2qp7wxt479kn80000gn/T/tmpEa1OkK/___code___.py", line 2, in <module> 
    exec compile(u"A = load('A')" + '\n', '', 'single') 
    File "", line 1, in <module> 

    File "sage/structure/sage_object.pyx", line 1032, in sage.structure.sage_object.load (build/cythonized/sage/structure/sage_object.c:11594) 
IOError: [Errno 2] No such file or directory: 'A.sobj'` 
+0

Это также https://ask.sagemath.org/question/34915/load-contents-of-a-txt-file-in-aage-лист/ – kcrisman

+0

Да. Надеюсь, что на обеих платформах не существует правила. Думал, что я смогу получить ответ быстрее. –

+0

Без проблем, мне просто нравится перекрестная ссылка ради тех, кто ищет в будущем. – kcrisman

ответ

0

Я нашел ответ в книге Финча. Первая цитата:

«Мы использовали модуль под названием os из стандартного библиотечного модуля Python, чтобы помочь нам написать код, который может работать на нескольких платформах. Текстовый файл должен иметь специальный символ для обозначения конца каждой строки в файле. К сожалению, по историческим причинам в каждом семействе операционных систем (Mac, Windows и UNIX) используется другой символ конца строки. Модуль os имеет константу, называемую lineep, которая содержит правильный символ для платформы, на которой выполняется код. Мы использовали оператор import os, чтобы сделать доступный модуль, и обратились к константе с помощью синтаксиса os.linesep. Мы также использовали функцию os.path.join, чтобы присоединиться к пути к имени файла с правильным символом для текущей операционной системы. "

Отрывок из: Craig Finch. «Руководство Sage для начинающих.»

Пример использования файла с именем "file2.txt", содержащий один текстовый символ, '1':

импорт ОС путь = "/ Users/barrybrent/.sage/sage_notebook.sagenb/home/магазин/2/21/212/2123/admin/19/data/'fileName =' File2.txt 'times = [] text_file = open (os.path.join (путь, имя_файла),' r ') линия = text_file.readline()

(Комментарий:. это просто строка символов, чтобы преобразовать его в Sage объект полезен в вычислениях :)

элементов = line.split (', ') times.appen д (с плавающей точкой (элементы [0] .strip()))

(Комментарий: оценка :)

раз [0]

(Комментарий: Шалфей говорит "1.0". Теперь мы можем выполнять арифметические действия с раз [0]?)

раз [0] +1

Sage говорит "2,0"