How to append to a file using Scheme?

2019-08-11 09:16发布

问题:

I am using TinyScheme (actually Script-Fu in GIMP), and cannot find a good way to open a file and append a line of text to it.

I am trying to log some info to the file for debugging, and transcript-on doesn't seem to be implemented...

Right now I am scraping along by reading the entire file (one character at a time!), concatenating that into a string, concatenating my text to the end of that, then writing it all out to the file again.

There must be a better way!

回答1:

It's going to be something like

(open-file "myfile" (file-options append))

You want to look up the file-options function.

Update

Here's the guile version:

(open-file "myfilename.dat" "a")


回答2:

Just had the same exact problem in GIMP and decided to use open-input-output-file. My solution is something like this:

(let* ((out (open-input-output-file "file.txt") ))
  (display "hello world" out)
  (newline out)                    
  (close-output-port out))

Went through the TinyScheme source and checked that this function actually calls fopen with "a+". The file is open for reading and writing. For our purposes we only want to write, so just ignore reading.

I am writing a Script-Fu to write the values of gimp-selection-bounds to a file.