gpt4 book ai didi

lisp - 获取目录中的文件,逐行打印

转载 作者:太空宇宙 更新时间:2023-11-03 19:01:16 25 4
gpt4 key购买 nike

我正在将我的一些 python 脚本移植到 Common Lisp。我需要获取某个目录中的文件列表并逐行打印每个文件的内容。此代码向我显示所有文件名。但是只为最后一个文件打印行。为什么?另外,按文件行迭代的最佳方法是什么?谢谢。

(dolist (file (directory (make-pathname :name :wild
:type :wild
:defaults "path\\to\\files\\")))
(print file)
(with-open-file (stream file)
(do ((line (read-line stream) (read-line stream)))
(nil t)
(print line))))

最佳答案

我建议编写一个函数,在给定路径名和流的情况下打印文件。

您使用 DO 进行迭代。没关系,但我会使用类似 LOOP 的东西,它可以让代码更容易阅读。

您的DO 是一个无限循环。您可能希望在到达 EOF 时结束循环。

READ-LINE 在读取超过文件末尾时生成错误。因此,您的代码在第一个文件末尾发出错误信号。此错误导致您的代码仅打印第一个文件。

您需要调用 READ-LINE 以测试 EOF 然后结束迭代。查看 READ-LINE 的参数。或者,您可以捕获 EOF 错误,但其他解决方案稍微简单一些。

关于lisp - 获取目录中的文件,逐行打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10460039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com