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