我在使用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'`
答案 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”