乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 76|回复: 7

[编程交流] 将文本导入变量Autolis

[复制链接]

55

主题

118

帖子

65

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
273
发表于 2022-7-6 10:21:36 | 显示全部楼层 |阅读模式
如何使用autolisp将TXT文件导入变量?
 
到目前为止,我已经能够做这样的事情:
 
(setq x(打开“C:/Documents and Settings/sgonzalez/My Documents/new_02.txt”)
 
但结果是:
 
 
命令:!x
#
 
而不是txt文件的真实内容。有人能帮我吗?像往常一样,这很紧急
 
谢谢
回复

使用道具 举报

2

主题

182

帖子

180

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 10:30:39 | 显示全部楼层
  1. (defun iniread (str file)
  2. ;; iniread
  3. ;;
  4. ;; Returns all valid entries in a file. (see below)
  5. ;;
  6. ;; file to be read must be structured in a way that
  7. ;; all lines begining with a `` ; '' is considered
  8. ;; to be a comment.
  9. ;;
  10. ;; EX:
  11. ;; Example file: Example.ini
  12. ;;
  13. ;; ; this is an example ini file.
  14. ;; var1=val1
  15. ;; var2=val2
  16. ;; ; var3=val3
  17. ;; var4=val4
  18. ;;
  19. ;;      ( (lambda ( / f my-list )
  20. ;;          (setq f (open "c:\\Example.ini" "R"))
  21. ;;          (setq my-list
  22. ;;              (apply
  23. ;;                'append
  24. ;;                   (iniread (read-line f) f)))
  25. ;;          (close f)
  26. ;;          my-list ) )
  27. ;;     
  28. ;; => ("var1=val1" "var2=val2" "var4=val4")
  29. ;;
  30. ;; By: Se7en
  31. ;;
  32. ( (lambda (s f)
  33.      (if s
  34.        (cons
  35.          (if (not (wcmatch s "*;*"))
  36.            (list s))
  37.          (iniread (read-line f) f))))
  38.   str
  39.   file ) )
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:42:57 | 显示全部楼层
首先,请在帖子中使用代码标签。
 
打开文件时,请记住添加模式(读、写、附加),在这种情况下,您将使用以下方法:
 
  1. (setq x (open "C:/Documents and Settings/sgonzalez/My Documents/new_02.txt" "[color=red]R[/color][color=black]"[/color]))

 
 
 
尝试使用read line函数获取所需内容,然后记住始终对文本文件使用close函数。
 
希望这有帮助!
回复

使用道具 举报

55

主题

118

帖子

65

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
273
发表于 2022-7-6 10:55:33 | 显示全部楼层
谢谢你们俩。。无论如何,到目前为止,我只是忘记在前面的消息中添加模式,但我在编程中没有添加,因此最终结果仍然是:
 
 
命令:!x
#
 
显然,txt文件有一个列表,我想与图形中的其他信息进行比较。另一方面,据我所知,您的消息中唯一有效的编程是:
 
(defun iniread(str文件)
((λ(s f)
(如果s
(缺点
(if(not(wcmatch s“*;*”))
(列表)
(iniread(读取行f)f)))
str公司
文件)
 
我说得对吗?其余部分只是注释,当我运行“iniread”函数时,结果如下:
 
命令:(iniread)
; 错误:参数太少
 
 
还有其他想法吗?
再次提前感谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:02:42 | 显示全部楼层
为什么递归Se7en?当然,这会在堆栈上转储大量信息,如果文件大小足够,那么会很快被烧掉?
 
  1. (defun _read ( filename / openfile line lst )
  2. (cond
  3.    ( (setq openfile (open filename "r"))
  4.      (while (setq line (read-line openfile))
  5.        (setq lst (cons line lst))
  6.      )
  7.      (close openfile)
  8.      (reverse lst)
  9.    )
  10. )
  11. )
回复

使用道具 举报

55

主题

118

帖子

65

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
273
发表于 2022-7-6 11:09:26 | 显示全部楼层
谢谢大家,我刚刚解决了这个问题,这里太简单了,这是我使用的代码
 
(setq x(打开“C:/Documents and Settings/sgonzalez/My Documents/new_02.txt”“r”))
(setq y(读取第x行))
(关闭x)
 
干杯
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 11:21:33 | 显示全部楼层
 
好极了
 
我重申。。。
 
回复

使用道具 举报

2

主题

182

帖子

180

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 11:27:22 | 显示全部楼层
 
嗯,当然,我想可以,但我想需要一个很大的文件。此外,递归并不都是坏事*哈哈,这个过程可能使用递归,但它仍然非常快。举个例子,我把你的和我的放在一个有10000行的文件里,我就在你的尾巴上。
 
 
  1. ;;;;;;;;; --- P R O F I L E   L I S P --- ;;;;;;;;;;;
  2. ;;   by (C.) Vladimir Nesterovsky, December 1998.
  3. ;;   Free for *non-commercial* personal use only
  4. ;;         with this notice unchanged
  5. ------------------------------------------------------
  6. TIMER_FOR_LM:READ: n=1, t=0.0100181, t/call=0.0100181.
  7. TIMER_FOR_J7:READ: n=1, t=0.0119895, t/call=0.0119895.
  8. Fastest abstraction: "LM:READ" With a time of: 0.0100181
  9. ------------------------------------------------------
  10. ...
  11. ------------------------------------------------------
  12. TIMER_FOR_LM:READ: n=1, t=0.00901222, t/call=0.00901222.
  13. TIMER_FOR_J7:READ: n=1, t=0.0109836, t/call=0.0109836.
  14. Fastest abstraction: "LM:READ" With a time of: 0.0090122
  15. ------------------------------------------------------
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-6 20:52 , Processed in 0.624735 second(s), 68 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表