明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2312|回复: 17

[已解答] 如何保存文字到.TXT文件指定的那一行

[复制链接]
发表于 2014-12-2 14:32 | 显示全部楼层 |阅读模式
;如何把282保存到指定那一行,比如要把282保存到888.TXT文件的第三行该如何做?还有如何掉用那一行的文字.谢谢
(DEFUN C:cd()
(SETQ TMPTXT (OPEN "E:/888.TXT" "W"))
(WRITE-LINE "282" TMPTXT)
(CLOSE TMPTXT)
(PRINC)
)
发表于 2014-12-2 14:52 | 显示全部楼层
读成表插入行到到你要的位置...再写入TXT....
 楼主| 发表于 2014-12-2 15:05 | 显示全部楼层
q3_2006 发表于 2014-12-2 14:52
读成表插入行到到你要的位置...再写入TXT....

还是不明白,我对LISP是一知半解.还在学习中.
要写入多行文字,
比如第一行是222
第二行是333
第三行是282
发表于 2014-12-2 16:37 | 显示全部楼层
本帖最后由 wzg356 于 2014-12-2 16:39 编辑
ymcui 发表于 2014-12-2 15:05
还是不明白,我对LISP是一知半解.还在学习中.
要写入多行文字,
比如第一行是222
在明经搜的
  1. ;txt返回一个表,每行一个子表
  2. (defun ayFile2List (xFileName / fp xRec sList)
  3.   (setq fp (open xFileName "r"))
  4.   (while (setq xRec (read-line fp))
  5.     (setq sList (cons (read (strcat "(" xRec ")")) sList))
  6.   );end_while
  7.   (close fp)
  8.   sList
  9. );end_defun

  10. ;============{ 在指定位置删除或插入元素 }===============
  11. ;nil表示要删除。如果有值为要插入的元素---by wowan1314
  12. ;(t11 '(1 2 3 4 5 6) 2 0);;->(1 2 0 3 4 5 6)
  13. ;(t11 '(1 2 3 4 5 6) 2 nil);;->(1 2 4 5 6)
  14. ;2013年7月20日 星期六
  15. (defun t11 (lst pos mod / qlst a hlst)
  16.     (setq a -1)
  17.     (setq hlst (vl-member-if-not
  18.             '(lambda(x)  (setq a (1+ a)) (if (= a pos) nil
  19.                     (setq qlst (cons x qlst))
  20.                 )
  21.             )
  22.             lst
  23.         )
  24.     )
  25.     (if mod
  26.         (apply 'append (list (reverse(cons mod qlst)) hlst))
  27.         (apply 'append (list (reverse qlst) (cdr hlst)))
  28.     )
  29. )

  30. ;根据表重写txt文件
  31. (defun rewritetxt (txtfile lst / dat_file ff i ii tuan )
  32.   (setq ff (open txtfile "w")) ;写文件,如不存在则新建文件,如存在新资料将覆盖旧资料。
  33.   (setq i 1)
  34.   (setq ii (length lst))
  35.   (while (and (/= nil lst) (<=  i ii))
  36.       (setq tuan (car lst))
  37.       (write-line tuan ff)
  38.       (setq lst (cdr lst))
  39.     (setq i (+ i 1))
  40.   )
  41.   (close ff)
  42. )
 楼主| 发表于 2014-12-2 16:54 | 显示全部楼层
wzg356 发表于 2014-12-2 16:37
在明经搜的

刚做了一个读取指定行的程序,看对不对.
  1. (defun c:cd()
  2. (setq b 3 s1 0)
  3. (setq TXT (open (findfile "E:/888.TXT") "r"))
  4. (while (<= s1 b)(setq s1 (+ s1 1))(read-line TXT))
  5. (setq rd (read-line TXT))
  6. (prompt(read-line TXT))
  7. (princ)
  8. )
 楼主| 发表于 2014-12-2 16:56 | 显示全部楼层
上面是读取第三行的不知为何读到第六行去了.(setq b 3
发表于 2014-12-2 17:05 | 显示全部楼层
本帖最后由 wzg356 于 2014-12-2 17:07 编辑
ymcui 发表于 2014-12-2 16:56
上面是读取第三行的不知为何读到第六行去了.(setq b 3

用地板的函数
读取第三行
(nth 2 (reverse (ayFile2List "d:\\888.TXT")))

读取第一行
(nth 0 (reverse (ayFile2List "d:\\888.TXT")))
发表于 2014-12-2 17:11 | 显示全部楼层
read-line 调用一次 自动换一列
改用repeat 取代 while 易读些
发表于 2014-12-2 17:16 | 显示全部楼层
本帖最后由 wzg356 于 2014-12-2 17:24 编辑
Andyhon 发表于 2014-12-2 17:11
read-line 调用一次 自动换一列
改用repeat 取代 while 易读些

我没用过你的这种方法,用7楼的方法很好的,试试就行了。每一行是一个子表

 楼主| 发表于 2014-12-2 17:22 | 显示全部楼层
wzg356 发表于 2014-12-2 17:05
用地板的函数
读取第三行
(nth 2 (reverse (ayFile2List "d:\\888.TXT")))

那写入要如何写
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-6 20:13 , Processed in 0.322314 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表