PowerShell使用Import-Csv导入无数据CSV时如何不重读文件获取列名
解决方法
你可以使用Select-Object的-Wait参数适配仅表头无数据的场景,不需要额外读取文件原始内容:
$filename = "你的CSV文件路径" # 兼容有数据、仅表头两种场景的列名读取 $columnNames = @( Import-Csv -Path $filename | Select-Object -First 1 -Wait | ForEach-Object { $_.PSObject.Properties.Name } )
说明
- 正常情况下CSV仅含表头时,
Import-Csv会直接返回$null,没有可用对象来读取属性名 - 添加
-Wait参数后,管道不会提前终止,Import-Csv解析表头生成的对象结构会被保留,哪怕没有后续数据行也能拿到完整的列名列表 - 最终
$columnNames变量中存储的就是CSV的全部表头字段,不需要额外判断文件是否存在数据行
内容的提问来源于stack exchange,提问作者jamacoe
相关产品推荐
相关产品推荐

