找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫码登录

搜索
查看: 5292|回复: 18

[分享] [脚本分享][后处理下载]从CSV文件中读取数据——[配置表]的应用-第二期

[复制链接]

18

主题

490

回帖

1万

积分

版主

积分
11791

论坛元老

发表于 2020-6-28 16:10:21 | 显示全部楼层 |阅读模式
上期回顾
让后处理修改变得简单点——[配置表]的应用-第一期
(出处: UG爱好者)

我们也许会觉得txt格式的配置表不够清爽,蜗牛是带有一点点强迫症的。
如果我们做成csv格式的呢?
01.png
这样看着会舒服很多吧 :D
那么怎么从后处理中获取数据呢?

这次分享通过运行一个脚本获取csv文件中的数据。
在表格中,设1行A列的单元格坐标为(0,0)
需要获取的值为6行C列,即(5,2);7行C列,即(6,2)

运行脚本
02.png
输出结果正确。

以下为脚本代码部分:
  1. proc readCSV { channel { header 1 } { symbol , }} {

  2.        set quote 0

  3.        set data [ split [ read $channel nonewline ] "\n" ]

  4.        foreach line $data {

  5.               set quote [ expr { $quote + [ regexp -all " $line ]}]

  6.               if { [ expr { $quote % 2 }] == "0" } {

  7.                      set quote 0

  8.                      append row_temp $line

  9.                      set row_temp [ split $row_temp , ]   

  10.                      foreach section $row_temp {

  11.                             set quote [ expr { $quote + [ regexp -all " $section ]}]

  12.                             if { [ expr { $quote % 2 }] == "0" } {

  13.                                    append cell_temp $section

  14.                                    set cell_temp [ regsub {"(.*)"} $cell_temp {\1} ]

  15.                                    lappend cell $cell_temp

  16.                                    unset cell_temp

  17.                                    set quote 0

  18.                             } else {

  19.                                    append cell_temp $section$symbol

  20.                             }

  21.                      }

  22.                      lappend final [ regsub -all {""} $cell " ]

  23.                      unset cell

  24.                      unset row_temp

  25.               } else {

  26.                      append row_temp $line\n

  27.               }

  28.        }

  29.        # generate array if needed, or return $final here

  30.        set row [ llength $final ]

  31.        set column [ llength [ lindex $final 0 ]]

  32.        if { $header == 1 } {

  33.               for { set i 0 } { $i < $row } { incr i } {         

  34.                      for { set j 0 } { $j < $column } { incr j } {

  35.                             set csvData([ lindex [ lindex $final 0 ] $j ],$i) [ lindex [ lindex $final $i ] $j ]

  36.                      }

  37.               }

  38.        } else {

  39.               for { set i 0 } { $i < $row } { incr i } {         

  40.                      for { set j 0 } { $j < $column } { incr j } {

  41.                             set csvData($i,$j) [ lindex [ lindex $final $i ] $j ]

  42.                      }

  43.               }

  44.        }

  45.        return [ array get csvData ]

  46. }





  47. set csv [ open [file dirname [info script]]/config.csv {RDWR} ]

  48. array set csvData [ readCSV $csv 0 ]

  49. puts $csvData(5,2)

  50. puts $csvData(6,2)

  51. close $csv
复制代码

当我们在后处理中source脚本后,调用数组$csvData便得到配置表中的值了。
得到的值该如何去利用,可以参考上一期的贴子。

以下为后处理和脚本文件
后处理和脚本文件.rar (53.04 KB, 下载次数: 267)

做一件对行业有贡献的事情。

评分

参与人数 3G币 +23 收起 理由
や木頭亾э + 3 楼主是大神!膜拜!
在想什么呢 + 10 不错,支持你!
安周 + 10 不错,支持你!

查看全部评分

11

主题

150

回帖

3029

积分

版主

积分
3029

优秀版主论坛元老

发表于 2020-6-28 16:13:05 | 显示全部楼层
本帖最后由 安周 于 2020-6-28 16:14 编辑

沙发拿下,希望大师继续分享!有你越来越精彩。

3

主题

44

回帖

1581

积分

六级士官

积分
1581
发表于 2020-6-28 16:13:24 | 显示全部楼层
牛哥66666666666666

66

主题

3940

回帖

3万

积分

上将

积分
33297

论坛元老

发表于 2020-6-28 16:25:24 | 显示全部楼层
感谢分享,能出个后处理程序单就好了..{:smile:}

现在外挂的那些时间和刀长都不准确{:cry:}

6

主题

377

回帖

5343

积分

上尉

积分
5343
发表于 2020-6-28 16:59:34 | 显示全部楼层
楼主太强大了!!!!!!!!!!!!!!!!!。

0

主题

1420

回帖

1万

积分

上校

积分
14820
发表于 2020-6-28 17:02:31 | 显示全部楼层
楼主太强大了!!!!

15

主题

426

回帖

6834

积分

上尉

积分
6834

VIP会员论坛元老

发表于 2020-6-28 19:36:08 | 显示全部楼层
大师666

1

主题

1458

回帖

1万

积分

上校

积分
14960
发表于 2020-6-29 08:54:23 | 显示全部楼层
感谢分享,有你越来越精彩。

0

主题

1012

回帖

1万

积分

中校

积分
11838
发表于 2020-7-2 08:51:45 | 显示全部楼层
多谢分享

5

主题

246

回帖

3603

积分

中尉

积分
3603
发表于 2020-10-13 21:12:01 | 显示全部楼层
楼主太强大了,感谢。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

咨询QQ:1359218528|发帖须知!|Archiver|手机版|小黑屋|UG爱好者论坛 ( 京ICP备10217105号-2 )

GMT+8, 2025-3-7 08:19

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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