回答
從描述和代碼,我不是100%確定如果以下適合你以後,但我會嘗試反正。在這個片段中的代碼走數值的清單,並將其寫入到輸出文件:
(defun write-numeric-list(filename l)
(with-open-file (out filename :direction :output :if-exists :append :if-does-not-exist :create)
(dolist (segment l)
(format out "~D " segment))
(format out "~%")))
樣品電話:
(write-numeric-list "output.txt" (list 1 2 -42))
這段代碼打開輸出文件只有一次的整個列表,而不是對於列表中的每個元素都是一次,就像在原始版本中一樣。您可能需要根據您在特定情況下的先決條件調整:if-exists
和:if-does-not-exist
選項。
實際上,format
可以使用稍微高級的格式控制字符串,僅僅通過它自己的列表。那些控制字符串並不是每個人的茶,但作爲參考,這裏是使用它們的代碼的一個版本:
(defun write-numeric-list(filename l)
(with-open-file (out filename :direction :output :if-exists :append :if-does-not-exist :create)
(format out "~{~D ~}~%" l)))
對於附加的黑客值,格式控制可以是'「〜{〜D〜^〜}〜%」' – tfb
看來你想要做遞歸。 我會做這樣然後
(defun write-segment (filename segment)
(labels
((do-write (out segment)
(cond ((null segment) (format out "~%"))
(t (format out "~D " (car segment))
(do-write out (cdr segment))))))
(with-open-file (out filename
:direction :output
:if-exists :append
:if-does-not-exist :create)
(do-write out segment))))
堆棧溢出。附加到現有文件的 –
。 –
什麼附加%到流這樣的:
(with-open-file (str "filename.txt"
:direction :output
:if-exists :supersede
:if-does-not-exist :create)
(format str "~A~%" '(1 2 3 4 5)))
在你的情況,我會做一些事情,比如去througth列表,並寫入流,有些事情是這樣的,小心額外的返回,如果你不想做任何事情,如果列表是空的,你也可以在打開文件之前添加一個控件。
(defun write-non-empty-list-to-a-file (file-name lst)
"writes a non empty list to a file if the list is empty creates the file with a return"
(with-open-file (str file-name
:direction :output
:if-exists :supersede
:if-does-not-exist :create)
(dolist (e lst)
(format str "~A~%" e))
(format str "~%")));this if you want an extra return
或者也許'(format str「〜{〜A〜%〜}〜%」lst)' – coredump
- 1. Python csv寫一個列表到文件
- 2. 寫一個列表到一個單獨的文本文件,每個列表中有一個文件列表
- 3. c#寫一個數組列表到一個文本文件
- 4. 如何寫一個「列表(對象)到一個文件中VB.NET?
- 5. C寫一個鏈接列表到一個文件
- 6. 寫一個簡單的列表到一個新的CSV文件
- 7. 的Python:寫一個元組列表到一個文件
- 8. 如何寫一個鏈接列表對象到一個文件
- 9. 讀取文件列表,然後寫列表到另一個文件的Python
- 10. 寫在文件的Common Lisp
- 11. 寫一個數組列表文件
- 12. python將一個列表寫入文件
- 13. 寫一個陣列結構到文件
- 14. Common Lisp - 編寫一個檢測循環列表的函數
- 15. 列表中的每一個字母? LISP
- 16. 用Python編寫一個完整的列表到一個文本文件
- 17. 在Lisp中用defun重寫列表
- 18. wxWidgets的 - 寫的所有文件夾到一個列表框
- 19. 在r中寫一個列表到excel文件
- 20. 寫一個列表實例到Excel文件 - Apache POI
- 21. 寫一個NSArray到文件
- 22. 在文件列表中寫一個點的列表
- 23. 寫兩個列csv文件到兩個單獨的列表
- 24. 如何將一列數據框寫入一個文件列表?
- 25. 覆蓋數據列表:取一個文件及其列表並將該列表寫入一個CSV文件
- 26. 寫一個循環到一個文件
- 27. C#寫入一個「到一個文件
- 28. 寫一個數組到一個文件
- 29. 讀取多個文本文件,並寫入到一個文件中的一列
- 30. 如何將文件中的列表添加到Lisp中
你的代碼是不可讀的 - 請修復縮進。 – sds
您正在打開每個列表元素的文件。這是非常低效的。 – sds