如何在 Common Lisp 中获取当前文件名
How can I get the current file name in Common Lisp
TL;DR
在 CL 中是否有与 Python 提供的特殊 __file__
变量等效的变量?如果没有,是否有其他方法从 lisp 文件中获取此信息?
动机
我试图从文件中访问当前文件名的原因是因为我正在尝试在我的主源文件中编写测试。在我大吃一惊之前,这是一个非常小的型项目,我允许自己灵活地尝试可能 dumb/bad design/etc 的事情,但实验很有趣并且给了我一个了解更多关于 CL 的机会。
问题
就是说,我正在开发一个简单的宏来设置 Fiveam 测试套件等,我想根据当前文件的名称命名测试套件。显然,传递文件的“基本名称”会很容易,但如果有其他方法,我将无法找到。
诚然,在 Python 中不存在 CL 宏,但如果我想对执行代码的文件做些什么,我可以使用特殊的 __file__
变量来获取它文件名。我想看看 CL 中是否有等效的功能(只要我能看到源代码看看它在做什么,库就可以了)?如果没有,假设可能的话,如何提供此功能?
最后的笔记
如果您想告诉我这是愚蠢的,我不应该这样做,请随意,但请至少简要说明原因以及更好的选择。谢谢。
*load-truename* and *compile-file-truename* 分别用于获取当前正在加载或编译的文件的路径名。使用 #.(or *compile-file-truename* *load-truename*)
.
,您可以在读取时获得有用的值
TL;DR
在 CL 中是否有与 Python 提供的特殊 __file__
变量等效的变量?如果没有,是否有其他方法从 lisp 文件中获取此信息?
动机
我试图从文件中访问当前文件名的原因是因为我正在尝试在我的主源文件中编写测试。在我大吃一惊之前,这是一个非常小的型项目,我允许自己灵活地尝试可能 dumb/bad design/etc 的事情,但实验很有趣并且给了我一个了解更多关于 CL 的机会。
问题
就是说,我正在开发一个简单的宏来设置 Fiveam 测试套件等,我想根据当前文件的名称命名测试套件。显然,传递文件的“基本名称”会很容易,但如果有其他方法,我将无法找到。
诚然,在 Python 中不存在 CL 宏,但如果我想对执行代码的文件做些什么,我可以使用特殊的 __file__
变量来获取它文件名。我想看看 CL 中是否有等效的功能(只要我能看到源代码看看它在做什么,库就可以了)?如果没有,假设可能的话,如何提供此功能?
最后的笔记
如果您想告诉我这是愚蠢的,我不应该这样做,请随意,但请至少简要说明原因以及更好的选择。谢谢。
*load-truename* and *compile-file-truename* 分别用于获取当前正在加载或编译的文件的路径名。使用 #.(or *compile-file-truename* *load-truename*)
.