powershell - 无法在 Powershell 中获取 CSV 行数
问题描述
我有一个结构如下的 csv 文件:
Text,Url
Learning Haskell,https://wiki.haskell.org/Learning_Haskell
我试图在遍历 csv 文件之前获取行数,因为我不想在空结果上开始循环。
通过研究(1 , 2),它似乎Import-csv
有一个.Count
属性,但由于某种原因我无法访问该属性。我正在使用 Powershell v5。
代码:
[string]$markdownlink = "markdownlinks.csv"
[string]$processedLinks = "completedlinks.txt"
$markdownlinkstoProcess = Import-Csv $markdownlink -Delimiter ","
# Returns 0
[int]$count=$markdownlinkstoProcess.Count
Write-output $count
解决方案
当您在 CSV 文件中有一个数据行时,导入会生成一个对象。它有一个已知的错误,即它将报告零作为.Count
$Var 的。这似乎发生在任何返回单个 PSCustomObject 的事情上——但我不确定。
解决方案是强制它成为一个数组。您可以将其转换为[array]
或简单地将其包装在@()
. 以您的代码为例...
$markdownlinkstoProcess = Import-Csv $markdownlink -Delimiter ","
$markdownlinkstoProcess.GetType()
# result = PSCustomObject
$markdownlinkstoProcess.Count
# result = 0
$markdownlinkstoProcess = @(Import-Csv $markdownlink -Delimiter ",")
$markdownlinkstoProcess.GetType()
# result = Object[]
$markdownlinkstoProcess.Count
# result = 1