如何在PowerShell中计算CSV列总和并追加至原文件
解决CSV列总和追加问题
你的原代码存在几个问题,导致无法得到预期输出:
- 文件名赋值错误:
$file =fruits.csv`` 中的反引号是PowerShell转义符,应当用单引号或双引号包裹文件名 - 使用
Export-Csv追加会输出结构化的CSV统计对象,而非你需要的纯文本格式总和行 - CSV里的
Count列默认是字符串类型,直接计算总和可能出现异常
以下是修正后的代码,可实现预期效果:
$file = 'fruits.csv' # 读取原文件全部内容,保留原有格式 $originalContent = Get-Content $file -Raw # 读取CSV并计算Count列总和(先将字符串转为整数) $totalSum = (Import-Csv -Path $file -Delimiter ', ' | ForEach-Object { [int]$_.Count } | Measure-Object -Sum).Sum # 拼接新内容:原内容 + 空行 + 总和行 $updatedContent = $originalContent + "`n`nTotal: $totalSum" # 写入文件 Set-Content -Path $file -Value $updatedContent -Force
代码说明:
Get-Content $file -Raw:一次性读取原文件所有内容,确保原有行格式和空格被保留Import-Csv -Delimiter ', ':指定CSV的分隔符为「逗号+空格」,避免解析Food列时出现错误ForEach-Object { [int]$_.Count }:将Count列的字符串值转为整数,保证求和计算的准确性- 最后拼接原内容、空行和总和文本,用
Set-Content写入文件,实现「保留原内容+追加总和」的效果
内容的提问来源于stack exchange,提问作者noobCoder
相关产品推荐
相关产品推荐

