确保路径是Racket中的目录路径

时间:2017-05-12 18:55:10

标签: shell file path racket filepath

Racket的路径库对文件和目录的处理方式略有不同。在基于Unix的Racket发行版中,目录末尾有一个尾随/。一些函数(例如in-directorypath-only)将使用此信息以不同方式处理导致文件和目录的路径。

不幸的是,推荐的创建路径的方法build-path没有任何良好的机制来创建目录路径。我知道我可以创建一个字符串路径并使用string->path,但这比直接使用build-path更脆弱:

> (string->path "a/b/")
#<path:a/b/>

我可以做的另一件事是将build-pathpath-only结合起来,为路径添加一个额外的'trash'元素,然后将其删除。但这很笨重,因为我必须制作那个“垃圾”字符串。

> (path-only (build-path "a" "b" "trash"))
#<path:a/b/>

我'只能'.(或'same)在build-path函数中,这可以确保它的目录路径,但是路径本身有{{1}最后,甚至无法使用.删除

path-only

虽然所有这三个都可以将路径转换为目录路径,但有没有更简洁的方法将现有的Racket路径转换为目录路径?

1 个答案:

答案 0 :(得分:1)

使用build-path,您走在正确的轨道上。您正在寻找的功能是path->directory-path。它需要一个路径对象,并将其转换为目录路径(在unix中,这意味着添加您提到的尾随/

> (build-path "a" "b")
#<path:a/b>
> (path->directory-path (build-path "a" "b"))
#<path:a/b/>