如何从 clj 文件中获取函数“print”输出到 REPL 的内容并将其全部放入文本文件中?有没有办法创建一个新的空文本文件并将其与其他 clj 文件一起放在项目目录中并进行处理?
谢谢你。
如何从 clj 文件中获取函数“print”输出到 REPL 的内容并将其全部放入文本文件中?有没有办法创建一个新的空文本文件并将其与其他 clj 文件一起放在项目目录中并进行处理?
谢谢你。
您可以通过重新绑定来完成此操作*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
我不确定重新设置这个变量是否会有任何负面影响。谨慎使用!
我知道这并不完全是您正在寻找的东西,而只是为了记录您可以使用with-out-str宏。
这会将输出评估为string
可以存储在文件中的输出。