【问题标题】:Ensure that a path is a directory path in Racket确保路径是 Racket 中的目录路径
【发布时间】:2017-10-12 04:30:23
【问题描述】:

Racket 的路径库处理文件和目录的方式略有不同。在基于 Unix 的 Racket 发行版中,目录末尾有一个 /。几个函数,例如in-directorypath-only 将使用这些信息来区别对待通向文件和目录的路径。

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

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

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

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

我“可以”在build-path函数中放一个.(或'same),这样可以确保它是一个目录路径,但是路径本身最后有一个.,这可以' 甚至不会被 path-only 删除:

> (build-path "a" "b" 'same)
#<path:a/b/.>

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

【问题讨论】:

    标签: shell file path racket filepath


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      • 2012-09-08
      • 2014-04-09
      相关资源
      最近更新 更多