3

如何从 clj 文件中获取函数“print”输出到 REPL 的内容并将其全部放入文本文件中?有没有办法创建一个新的空文本文件并将其与其他 clj 文件一起放在项目目录中并进行处理?

谢谢你。

4

2 回答 2

4

您可以通过重新绑定来完成此操作*out*

(binding [*out* (clojure.java.io/writer "foo.txt")]
  (print "Hello World"))

(print "This does NOT go to the file") ;; outside the binding macro

运行后,应该有一个名为foo.txt“Hello World”的文件。

唯一需要注意的是,这种重新绑定只会影响在binding宏中评估的表单。


这将重新绑定*out*到文件编写器,并且不需要使用binding宏。

(set! *out* (clojure.java.io/writer "foo.txt"))

(print "foo") ;; written to foo.txt
(print "bar") ;; written to foo.txt

我不确定重新设置这个变量是否会有任何负面影响。谨慎使用!

于 2013-02-25T22:18:27.887 回答
0

我知道这并不完全是您正在寻找的东西,而只是为了记录您可以使用with-out-str宏。

这会将输出评估为string可以存储在文件中的输出。

于 2013-02-25T22:23:07.800 回答