常见的lisp逐行读取gzip流

时间:2017-04-05 08:23:16

标签: common-lisp sbcl

我目前正在处理一个问题,我必须逐行读取一个压缩文件,然后进一步处理每一行并用它做一些事情。

我设法使用以下代码从stdin读取:

df <- data.frame(metric=c(10,20,30,40,NA), cnt=c(1,2,1,2,2))
names(df) <- c("values", "lengths")
inverse.rle(df) # or
data.frame(metric=inverse.rle(df))

*这将是一个命令行工具

我在哪里运行:

(defun process ()

  (princ (split-sequence:split-sequence #\Space (read-line))))

(defun main (args)
  (process))

这很好用,但它只打印第一行。我假设我必须在第一部分插入某种形式的循环,但我不确定如何做到这一点。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我用以下方法解决了这个问题:

  (loop for line = (read-line) ; stream, no error, :eof value
     until (eq line :eof)
     do (princ line))