加载.txt文件并将其中的字符串转换为Sage笔记本中的可用数据的步骤

时间:2016-09-24 04:16:13

标签: sage

我在使用OS 10.11.6的Mac上,我正在学习Sage 7.2的笔记本界面。首先,在Sage工作表中,我创建了一个包含字符串[1, 2, 3]的.txt文件并保存了它。我可以直接打开文本文件并通过单击来验证其内容,但我还不能在Sage中执行此操作。

我希望能够打开它并将字符串转换为可用的Sage对象。我很欣赏明确的指示,对我的Sage背景一无所知。谢谢。

注意:执行我刚才在Sage文档中提出的"保存和加载单个对象"在我的环境中不起作用(上面的规范。)我做A = [1, 2, 3]。然后我做save(A, 'A'),Sage返回A.sobj的热门链接。然后我点击了保存并退出按钮。然后我点击了#34;退出。"然后我重新登录并转到工作表,在那里我完成了我刚才描述的步骤。我做A = load('A')。这就是Sage所说的:

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'`

1 个答案:

答案 0 :(得分:0)

我在芬奇的书中找到了答案。首先引用:

“我们使用Python标准库模块中的一个名为os的模块来帮助我们编写可以在多个平台上运行的代码。文本文件必须具有特殊字符,以表示文件中每行的结尾。遗憾的是,由于历史原因,每个操作系统系列(Mac,Windows和UNIX)使用不同的行尾字符。 os模块有一个名为linesep的常量,它包含运行代码的平台的正确字符。我们使用语句import os来使模块可用,并使用语法os.linesep访问常量。我们还使用函数os.path.join将文件名的路径连接到当前操作系统的正确字符。“

摘录自:克雷格芬奇。 “Sage初学者指南。”

使用名为“File2.txt”的文件的示例,该文件包含单个文本字符“1”:

import os path ='/ Users / barrybrent / .sage / sage_notebook.sagenb / home / store / 2/21/212/2123 / admin / 19 / data /'fileName ='File2 .txt'times = [] text_file = open(os.path.join(path,fileName),'r')line = text_file.readline()

(注释:只是一个字符串。要将它转换成一个在计算中有用的Sage对象:)

elements = line.split(',')times.append(float(elements [0] .strip()))

(评论:评估:)

倍[0]

(评论:Sage说“1.0”。现在我们可以用时间[0]做算术吗?)

倍[0] 1

Sage说“2.0”