每次运行后如何更新TCL文件中的标志位?

纳格什高中

我正在编写自动化脚本,如果特定标志位在 data.tcl 文件中设置为 1,则测试运行。完成第一个任务后,我需要将 MAC 标志值重置为 0,我需要将 xmac 标志文件 1 和剩余标志设置为 0。

在 data.tcl 中运行测试脚本标志值之前

set mac 1 
set xmac 0 
set fea 0 
set fea1 0 

第一次运行后:data.tcl 文件的预期内容:

  set mac 0 
  set xmac 1 
  set fea 0 
  set fea1 0 

第二次运行后:data.tcl 文件的预期内容:

  set mac 0 
  set xmac 0 
  set fea 1 
  set fea1 0 

第三次运行后:data.tcl 文件的预期内容:

  set mac 0 
  set xmac 0 
  set fea 0 
  set fea1 1 


   fileutil::replaceInFile data.tcl 30 1 0 

上面的命令将位置 31 处的值重置为 0,但在我的情况下,每个标志作为不同长度的名称,所以我们不能使用位置指针来设置和重置标志我尝试使用 fileutil 包的一些命令,但我无法得到一些正确的结果。你能帮我用这段代码在每次运行后设置和重置标志吗?

唐纳德研究员

诀窍是想出一种不需要文件索引的方法来进行映射。

proc setDataState {filename mapping} {
    set f [open $filename]
    set lines [split [read $f] "\n"]
    close $f

    set f [open $filename "w"]
    foreach line $lines {
        if {[regexp {^(\s*set\s+(\w+)\s+)\w+(.*)$} -> head key tail] && [dict exists $mapping $key]} {
            set line $head[dict get $mapping $key]$tail
        }
        puts $f $line
    }
    close $f
}

这样你就可以以可控的方式更改文件,也许像这样:

setDataState data.tcl {
    mac 0 
    xmac 1 
    fea 0 
    fea1 0 
}

好的,这样编辑就完成了,但真正的关键是您可以通过变量提供状态字典;这让你可以做更复杂的事情:

# This shuffles the “1” along
set statedict [dict create  mac 0  xmac $mac  fea $xmac  fea1 $fea]
setDataState data.tcl $statedict

我认为您实际上最好使用 SQLite 数据库来控制您的代码(并整理结果)。但这是一个更大的变化。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何更新mysql查询中的标志位?

在Spyder中再次运行代码后,如何查看更新的数据框(每次运行后都无需双击变量浏览器)?

每次在Service中更改数据后如何更新Activity

如何在Python的文件夹中运行Tcl脚本?

Android 中的 SQLite“更新后”触发器似乎不会在每次记录更新后运行

每次内核升级后,Grub如何更新?

找不到bash文件中的路径时,如何在NS2中运行tcl脚本?

每次运行“ yum更新”时如何运行脚本?

如何在Atom中运行Tcl代码?

每次更新后将.less文件编译为.css

Windows每次更新后是否仍保留旧版本的文件

每次我在Java中运行程序时如何向文件添加对象

连接后如何在 mongo shell 中运行 javascript 文件

在Ubuntu 11.10中安装LAMP后如何运行php文件?

如何使用python和cx_Oracle更新oracle表中的列并在每次记录更新后提交

每次登录后如何只运行一次javascript?

更新某些值后如何刷新jquery文件中的页面?

FuncAnimation 如何在每次迭代后更新文本

每次运行该函数时如何更新数据帧?

如何使用python -c标志更新json文件?

运行文件夹中的所有TCL脚本

Angular 7更新后,业力无法使用监视标志运行

如何在32位或64位配置中以编程方式运行ANY CPU .NET可执行文件?

每次下载文件时,如何使python程序自动运行?

每次迭代后更新数组

值更改后如何创建新的顺序标志(在SQL中)

在为Ubuntu 17.04运行软件更新程序后,文件对话框中缺少路径栏

目录内容更新后如何运行命令?

单击后如何获取更新以停止运行?