【问题标题】:Mathematica: exporting to a variable pathMathematica:导出到变量路径
【发布时间】:2011-08-25 19:12:01
【问题描述】:

这很棘手。 一旦在 Mathematica 中导出数据的路径在引号下,我如何插入变量作为路径的一部分?换句话说,我在一个递增 VAL 的循环中,并且想要将 MyData 导出到 VAL.dat。想法?

伪代码: 导出["~/Documents/VAL", MyData]

【问题讨论】:

  • 欢迎来到 StackOverflow

标签: variables loops wolfram-mathematica quotes


【解决方案1】:

除了 Howard 和 Mr.Wizard 的回答之外,我可以说查找 FileNameJoin 以获得一种不错的、与系统无关的方式来编写路径字符串和 IntegerString 可以用来将整数转换为具有固定位置数的字符串,使您的文件排序更好:

In[33]:= VAL = 32;
IntegerString[VAL, 10, 4]

Out[34]= "0032"

我通常不太需要跨操作系统的兼容性(主要是为我自己编程),所以我通常的风格是这样的

Export["directoryPart\\FixedFileNamePart"<>IntegerString[VAL, 10, 4]<>".dat","TSV"]

如果从扩展名中不清楚,请将“TSV”替换为您需要的文件类型。请注意,我在 Windows 上,它使用反斜杠作为分隔符。由于这也是转义字符,因此必须使用反斜杠本身对其进行转义;这解释了双反斜杠。您似乎使用的是 UNIX 衍生产品,因此没有必要这样做。这确实显示了 FileNameJoin 的值,它会自动处理这些细节。

【讨论】:

  • +1 - 我非常同意使用FileNameJoinFileNameSplit 和朋友的建议。无论您是否“为自己”编程,编写可移植代码都是必不可少的,因为您永远不知道您的哪一段代码会在某个时候被其他人使用。
【解决方案2】:

如何将您的数字转换为字符串并将其与路径连接:

"~/Documents/"<>ToString[VAL]

【讨论】:

  • 太棒了。如果您还在 val 之后附加扩展名,它就可以工作。我开始学习数学了!谢谢
【解决方案3】:

直接回答您的问题,您可以使用StringReplace

Table[
  StringReplace[
     "~/Documents/#.dat", 
     "#" :> IntegerString[VAL, 10, 4]],
  {VAL, 27, 29}
]
 {"~/Documents/0027.dat", "~/Documents/0028.dat", "~/Documents/0029.dat"}

“#”被任意选择为占位符。也可以使用其他字符或字符串。

【讨论】:

    猜你喜欢
    • 2019-05-30
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多