在Python中,第三方enhpath.py库允许这样的内容:
In [2]: path("/home/lowks/Documents").listdir()
Out[2]:
[path('/home/lowks/Documents/5fc72638da7598b350733c5a51fce596.jpeg'),
path('/home/lowks/Documents/Prop-API-01.pdf'),]
Elixir中的File模块执行如下操作:
iex(1)> File.ls!("/home/lowks/Documents")
["5fc72638da7598b350733c5a51fce596.jpeg","Prop-API-01.pdf"]
这对我来说效果不好,因为我想要像上面那样的绝对路径,所以我做了类似的事情:
iex(2)> File.ls!("/home/lowks/Documents") |> Enum.map(&Path.absname(&1))
["/home/lowks/5fc72638da7598b350733c5a51fce596.jpeg",
"/home/lowks/dsr_excel_csv.sql"]
但是从输出可以看出,绝对路径连接到cwd工作目录而不是正确的路径" / home / lowks / Documents"。这看起来和行为类似于用于处理Python中的路径的股票python库,我的问题是他们有什么行为像第三方Python路径库?
答案 0 :(得分:2)
在我看来,如果您使用Path.expand/2代替Path.absname/1
,那么您的第二个版本就会有效:
iex(1)> path = ...
iex(2)> File.ls!(path) |> Enum.map(&Path.expand(&1, path))
答案 1 :(得分:1)
我已经搜索过并且没有找到任何libs,所以我自己创建了一个:
答案 2 :(得分:0)
你也可以这样做:
def dir_files(dir_path) do
File.ls!(dir_path) |> Enum.map(&Path.join(dir_path, &1))
end