gpt4 book ai didi

csv - 将 csv 数据写入命名空间内的矩阵时,TCL 抛出无效的命令名称

转载 作者:行者123 更新时间:2023-12-04 05:10:48 27 4
gpt4 key购买 nike

这是一个奇怪的问题,我似乎无法弄清楚。我正在使用 TCL 8.5,我正在尝试使用 csv::read2matrix 将数据从 CSV 文件读取到矩阵中命令。但是,每次我这样做时,它都会说我试图写入的矩阵是一个无效的命令。我在做什么的片段:

package require csv
package require struct::matrix

namespace eval ::iostandards {
namespace export *
}

proc iostandards::parse_stds { io_csv } {
# Create matrix
puts "Creating matrix..."
struct::matrix iostdm

# Add columns
puts "Adding columns to matrix..."
iostdm add columns 6

# Open File
set fid [open $io_csv r]
puts $fid

# Read CSV to matrix
puts "Reading data into matrix..."
csv::read2matrix $fid iostdm {,}

close $fid
}

当我在 TCLSH 中运行此代码时,出现此错误:
invalid command name "iostdm"

据我所知,我的代码是正确的(当我没有将它放在命名空间中时。我尝试了 namespace import ::csv::* ::struct::matrix::* 但它什么也没做。

这些包有什么我遗漏的吗? wiki.tcl.tk 网站上没有任何内容提及此类内容,并且所有包的 man 包都没有提及在另一个命名空间内调用的任何内容。

最佳答案

问题是 iostdm 中定义iostandards 命名空间。这意味着,它应该被引用为 iostandards::iostdm ,这就是你应该如何传递给 csv::read2matrix :

    csv::read2matrix $fid iostandards::iostdm {,}

更新

我注意到您在阅读之前硬编码向矩阵添加了 6 列。更好的方法是告诉 csv::read2matrix自动扩展矩阵:
    csv::read2matrix $fid iostandards::iostdm , auto

关于csv - 将 csv 数据写入命名空间内的矩阵时,TCL 抛出无效的命令名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14947460/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com