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これにより、ファイルに保存できるとして出力が評価されます。