我希望使用tcl将.csv文件中的特定行复制到另一个.csv文件中的特定列。
我尝试过的操作是将我想要的行复制到一个新的.csv文件中,然后将该行手动复制到我的.csv文件中。但我希望自动化所有这些操作,并将.csv中的一行直接复制到现有.csv文件中的一列中。
这是我尝试过的:
a = [ 20.0, 8.0, 2.5 ]
b = 4
if b > len(a):
r = 2*b
else:
r = b
是否可以在源文件的第x行有一个指针并将其复制到目标文件中的特定目标中。
我是tcl的新手。请提供示例。
谢谢, IEK
答案 0 :(得分:1)
作为Tcl的新手,您需要学习的一件事是Tcllib中有许多有用的代码,这是Tcl社区编写的一组软件包。在这种情况下,csv
和struct::matrix
软件包使此任务变得微不足道(据我所知),这很好,因为CSV文件具有一些不明显的棘手方面。
package require csv
package require struct::matrix
# Read the source data
set srcMatrix [struct::matrix]
set f [open "filenameSource.csv" r]
csv::read2matrix $f $srcMatrix
close $f
# Read the destination data so we can UPDATE it
set dstMatrix [struct::matrix]
set f [open "Destination.csv" r+]
csv::read2matrix $f $dstMatrix
# Leaving the file open; we're going to rewrite it…
# Do the copying operation; I assume you know which row and column to copy from/to
$dstMatrix set column 2 [$srcMatrix get row 34]
# Write back
chan seek $f 0
csv::writematrix $f $dstMatrix
chan truncate $f; # Make sure there's no junk left if the file shortened
close $f