没有什么错误与文件扩展名.txt,但是当Mathematica导出和导入文本文件时,它假定它是一个字符串。你可以看到:
Export["C:\\test.txt", {{1, 2, 3}, {4, 5, 6}}]
Head[Import["C:\\test.txt"]]
(* Output: String *)
相反,尤金建议你可以改变文件扩展名:
Export["C:\\test.dat", {{1, 2, 3}, {4, 5, 6}}]
Head[Import["C:\\test.dat"]]
(* Output: List *)
注意,它甚至不会使用文件扩展名不明白:
Export["C:\\test.xyz", {{1, 2, 3}, {4, 5, 6}}]
Head[Import["C:\\test.xyz"]]
(* Output: Export::type: "List cannot be exported to the "XYZ" format." *)
真的,发生了什么事情是Import
和Export
正试图从文件扩展名中推断出您想使用的类型。您可以随时指定类型改为手动:
Export["C:\\test.txt", {{1, 2, 3}, {4, 5, 6}},"List"]
Head[Import["C:\\test.txt"]]
(* Output: String *)
输出文件"List"
类型和类型"String"
将是一样的,所以你需要在导入过的文件,将其指定:
Export["C:\\test.txt", {{1, 2, 3}, {4, 5, 6}},"List"]
Head[Import["C:\\test.txt","List"]]
(* Output: List *)
请注意,即使您忘记指定"List"
类型的Export
,也能正常工作,因为输出文件仍然可以作为列表导入兼容。
最坏的情况下,你总是可以试试这个:
Export["C:\\test.txt", {{1, 2, 3}, {4, 5, 6}}]
ToExpression[Import["C:\\test.txt"]]
(* Output: {4,5,6} *)
无法很好地工作,只给你下排。你得有点迂腐:
Export["C:\\test.txt", {{1, 2, 3}, {4, 5, 6}}]
ToExpression[StringSplit[Import["C:\\test.txt"], "\n"]]
但在所有这些可能性,我已经提到的最好,最简单的就是直接告诉Import
命令,你所拥有的是一个清单:
Import["C:\\test.txt","List"]
这就是为什么可选参数首先存在于Import
。它是可选的,因此我们可以懒惰,让Mathematica决定.txt文件是字符串,.dat文件是列表,但是如果你不希望Mathematica做到这一点(即Mathematica做错了),你只需指定"List"
或您正在导入的任何类型的文件。
你几乎得到这个权利,但你用这实际上意味着指示类型"Data"
(从文件):
“数据在通用Wolfram语言形式(列表,串等) “
这意味着你不会得到太多的帮助 - Mathematica仍然会决定这是一个字符串。你想要的类型是"List"
。
尝试“表”作为“导入”的第二个参数: – Alan 2014-09-26 18:17:31
尝试“.m”(或甚至“.mx”,如果只有mathematica需要读取它) – agentp 2014-09-26 18:21:51