【问题标题】:How can I iterate a function with a parameter there the parameter is filename in lisp?如何使用参数迭代函数,参数是 lisp 中的文件名?
【发布时间】:2020-05-08 21:31:32
【问题描述】:

我在一个文件夹中有 20 个文本文件,我找不到任何解决方案,我只有一个参数的主函数如何调用这些文件(文件的扩展名为“txt”)。我尝试使用通配符,但我总是得到路径名。我的文件夹名称是 textfiles,其中包含 20 个文件,我在运行程序时也不能有任何参数。

【问题讨论】:

  • 您是在问如何在 Common Lisp 中列出目录中的文件?
  • 使用DIRECTORY函数。
  • (directory "textfiles/*.txt")) 给我零。
  • 尝试使用绝对路径名,*DEFAULT-PATHNAME-DEFAULTS* 可能不是您所期望的。
  • 您确实需要说明您正在使用什么实现。还要报告(namestring (merge-pathnames (pathname ...) *default-pathname-defaults*)) 告诉您的内容,其中... 是您认为存在的文件名之一,包括目录。

标签: lisp common-lisp


【解决方案1】:

您可以尝试以下方法:

(defun my-func (dir)
    (setq pathname (make-pathname :name :wild :type "txt" :defaults (pathname dir)))
    (loop 
      for file in (directory pathname) do 
        (print (file-namestring file))))

如果要打印文件的完整路径,可以使用 namestring 代替 file-namestring。

【讨论】:

  • 非常感谢。但是我的目录的路径应该是动态的,所以当我提交它应该可以在不更改代码的情况下工作
  • 没问题。我已经更新了代码来做到这一点。现在您可以将目录作为字符串或路径名传递。
猜你喜欢
  • 1970-01-01
  • 2011-02-24
  • 2022-01-08
  • 2013-10-24
  • 1970-01-01
  • 2020-02-06
  • 2012-07-22
  • 2015-01-26
  • 2021-02-07
相关资源
最近更新 更多