0

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"]

ただし、出力から、絶対パスが正しい「/home/lowks/Documents」ではなく、cwd 作業ディレクトリに結合されていることがわかります。これは、Python でパスを処理するためのストック python ライブラリのように見え、動作します。私の質問は、サード パーティの Python パス ライブラリのように動作するものがあるかどうかです。

4

3 に答える 3

2

次の代わりにPath.expand/2を使用すると、2番目のバージョンが機能するように思えますPath.absname/1

iex(1)> path = ...
iex(2)> File.ls!(path) |> Enum.map(&Path.expand(&1, path))
于 2014-03-11T16:21:52.083 に答える