【问题标题】:How to write file path in elixir-iex? I am using windows如何在 elixir-iex 中写入文件路径?我正在使用窗户
【发布时间】:2022-02-18 00:34:22
【问题描述】:

这是我写的:

File.read("C:\Users\Mostafiz\OneDrive\Desktop\New_Text_Document")

但出现以下错误:

{:error, :enoent}

我从该文件的属性中复制了该文件路径。

C:\Users\Mostafiz\OneDrive\Desktop

现在我的问题是,elixir-iex这个文件路径怎么写?

【问题讨论】:

  • 投票结束这个问题:它需要更多信息来回答每个答案“这个解决方案不起作用”......
  • 但我尝试了所有解决方案,但每次都失败了。我遇到了同样的错误。
  • 可能有两个问题: 1) \ 正在转义字符串中的字符。既然你说你已经尝试了答案,但它仍然不起作用,可能另一个问题是 2)文件不存在。您可以编辑您的问题以证明该文件存在吗?
  • 我查看了目录,文件存在。我想,我没有正确编写路径。 “C:\Users\Mostafiz\OneDrive\Desktop”我从该文件的属性中复制了这个文件路径。现在我的问题是,elixir-iex这个文件路径怎么写?

标签: windows elixir elixir-iex


【解决方案1】:

与许多其他语言一样,Elixir 将字符串中的退格解释为转义。其中一些具有特殊含义(例如 \n 用于换行符),但那些不会成为转义字符本身的含义。例如,\U 变为 U。您可以通过在iex 中写入IO.puts <your string> 来检查这一点,您会看到反斜杠消失了:

iex(1)> IO.puts "C:\Users\Mostafiz\OneDrive\Desktop\New_Text_Document"
C:UsersMostafizOneDriveDesktopNew_Text_Document

要获得您想要的路径,您需要转义反斜杠本身(在字符串中写入 \\)或使用正斜杠,因为它们也被识别为路径分隔符。

所以要么这样:

iex(1)> IO.puts "C:\\Users\\Mostafiz\\OneDrive\\Desktop\\New_Text_Document"
C:\Users\Mostafiz\OneDrive\Desktop\New_Text_Document

或者这个:

iex(1)> IO.puts "C:/Users/Mostafiz/OneDrive/Desktop/New_Text_Document"
C:/Users/Mostafiz/OneDrive/Desktop/New_Text_Document

【讨论】:

  • 此解决方案无效。
【解决方案2】:

始终使用~S sigil 作为路径,它可以防止字符串插值。

iex|?|1 ▸ "C:\Users\Mostafiz\OneDrive\Desktop\New_Text_Document"
"C:UsersMostafizOneDriveDesktopNew_Text_Document"
iex|?|2 ▸ ~S"C:\Users\Mostafiz\OneDrive\Desktop\New_Text_Document"
"C:\\Users\\Mostafiz\\OneDrive\\Desktop\\New_Text_Document"

【讨论】:

  • 此解决方案无效。
【解决方案3】:

这可能是因为您需要转义正斜杠。

File.read("C:\\Users\\Mostafiz\\OneDrive\\Desktop\\New_Text_Document") 有效吗?

【讨论】:

  • 此解决方案无效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-09
  • 1970-01-01
  • 1970-01-01
  • 2021-03-22
  • 2016-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多