Common Lisp 中的路径名,其中包含通配符的文件名
pathnames in Common Lisp, filenames with wildcards in them
字符*
和?
用作路径名中的通配符。如何引用具有 ?
作为其实际字符之一的文件名?例如:
[18]> (wild-pathname-p #p"foo")
NIL
[19]> (wild-pathname-p #p"foo?")
T
所以引用文件名 "foo?" 不能这样。我试图用反斜杠转义 ?
,但没有用。我尝试使用 \u3f
或 \u003f
来使用 unicode,但这没有用。
如何引用名称中包含通配符的文件:如何探测、打开等?
这取决于实现,但对于某些人来说,反斜杠确实有效。但是因为 namestrings 是字符串,要得到一个带有反斜杠的字符串,你必须用另一个反斜杠转义反斜杠。因此,例如,"foo?"
被转义为 "foo\?"
,而不是 "foo\?"
。
上次我检查过,在 CLISP 中,无法引用名称中带有通配符的文件。我的解决方案是避免使用 CLISP。
在我的 Mac 运行 Mac OS X 10.10.3 上:Clozure CL、SBCL 和 LispWorks 使用 *
编写路径名,如下所示:
#P"/private/tmp/test.\*"
不过,它们在其他一些细节上可能有所不同。
SBCL 支持 (make-pathname :directory "" :name file)
将 string
转义为正确的 pathname
。
字符*
和?
用作路径名中的通配符。如何引用具有 ?
作为其实际字符之一的文件名?例如:
[18]> (wild-pathname-p #p"foo")
NIL
[19]> (wild-pathname-p #p"foo?")
T
所以引用文件名 "foo?" 不能这样。我试图用反斜杠转义 ?
,但没有用。我尝试使用 \u3f
或 \u003f
来使用 unicode,但这没有用。
如何引用名称中包含通配符的文件:如何探测、打开等?
这取决于实现,但对于某些人来说,反斜杠确实有效。但是因为 namestrings 是字符串,要得到一个带有反斜杠的字符串,你必须用另一个反斜杠转义反斜杠。因此,例如,"foo?"
被转义为 "foo\?"
,而不是 "foo\?"
。
上次我检查过,在 CLISP 中,无法引用名称中带有通配符的文件。我的解决方案是避免使用 CLISP。
在我的 Mac 运行 Mac OS X 10.10.3 上:Clozure CL、SBCL 和 LispWorks 使用 *
编写路径名,如下所示:
#P"/private/tmp/test.\*"
不过,它们在其他一些细节上可能有所不同。
SBCL 支持 (make-pathname :directory "" :name file)
将 string
转义为正确的 pathname
。