在Python中,你可能会这样做
fout = open('out','w')
fin = open('in')
for line in fin:
fout.write(process(line)+"\n")
fin.close()
fout.close()
(我认为其他许多编程语言也是类似的)。 在Emacs Lisp中,你会这样做
(find-file 'out')
(setq fout (current-buffer)
(find-file 'in')
(setq fin (current-buffer)
(while moreLines
(setq begin (point))
(move-end-of-line 1)
(setq line (buffer-substring-no-properties begin (point))
;; maybe
(print (process line) fout)
;; or
(save-excursion
(set-buffer fout)
(insert (process line)))
(setq moreLines (= 0 (forward-line 1))))
(kill-buffer fin)
(kill-buffer fout)
以下代码灵感和实现来自于Emacs Lisp: 逐行处理文件。我是否应该尝试完全不同的方法?如何从打印语句中删除""
?
(ignore-errors ...)
代替(condition-case ...)
,它们的作用相同。更好的做法是移除condition-case
并将(read-from-minibuffer "")
替换为(ignore-errors (read-from-minibuffer ""))
。 - Flux