[玩转系统] PowerShell - 获取 CSV 文件中的行数 [3 种方法]
作者:精品下载站 日期:2024-12-14 05:26:08 浏览:15 分类:玩电脑
PowerShell - 获取 CSV 文件中的行数 [3 种方法]
使用 Get-Content
Cmdlet
可以通过以下方式使用 Get-Content
cmdlet 来获取指定 .csv
文件中的行数:
- 具有
.Length
属性的Get-Content
cmdlet - 具有
.Count
属性的Get-Content
cmdlet - 具有
.ReadCount
属性的Get-Content
cmdlet - 带有
Measure-Object
cmdlet 及其-Line
参数的Get-Content
cmdlet
在采用上述方法之前,让我们先看一下 countries.csv
的内容;您可以使用您的 .csv
文件。虽然这里的内容是可选的,但它有助于了解我们拥有的行数。
countries.csv
文件内容:
将 Get-Content 与 .Length 属性结合使用:
(Get-Content .\countries.csv).Length
输出 :
6
Get-Content 用于检索指定文件的内容,在我们的例子中为 countries.csv
。我们使用 .
表示法,因为 countries.csv
位于当前目录中,但我们可以将路径传递为 E:\Test\countries.csv 如果 .csv
文件位于不同的目录中。
通过此方法,我们使用 Get-Content
将 countries.csv
的内容(包括标题)读取到数组中,然后访问 .Length
该数组的属性来获取 countries.csv
文件中的行数。当我们想要获取完整.csv
文件的行数时,首选此方法;但是,它可能会消耗大量内存,并且对于较大的文件来说速度会很慢,因为它将整个 CSV 文件加载到内存中。
将 Get-Content
与 .Count
属性结合使用可获取 PowerShell 中指定 CSV 文件的行数。
将 Get-Content 与 .Count 属性结合使用:
(Get-Content .\countries.csv).Count
输出 :
6
此代码与前面的示例类似,统计了 countries.csv
文件的标头,但我们使用了 .Count
属性来获取 中的总行数>countries.csv
。与之前的方法类似,它也会将整个文件加载到内存中;对于大文件来说,它可能会很慢并且消耗大量内存。请记住,.Count
和 .Length
是相同的属性并给出相同的结果。
将 Get-Content
与 Measure-Object
cmdlet 及其 -Line
参数结合使用来获取 CSV 文件中的行数。
将 Get-Content 与 Measure-Object -Line 结合使用:
(Get-Content .\countries.csv) | Measure-Object -Line
输出 :
Lines
-----
6
这是在 PowerShell 中获取 CSV 文件行数的另一种方法。在此方法中,我们使用管道 (|
) 将 Get-Content
cmdlet 读取的内容转发到 Measure-Object
。在这里,我们将 -Line
参数与 Measure-Object
一起使用,它告诉我们计算接收到的输入中的行数。
现在,什么是测量对象?此 cmdlet 计算对象特定类型的属性值,它根据命令中给定的参数执行。例如,我们使用 -Line
参数来获取行数,但 -Word
、-Character
和 -Property
用于分别检索单词、字符和属性名称。
我们可以使用 Measure-Object 来对对象或具有我们将在命令中指定的特定属性的对象进行计数。例如,如果您使用数值,我们还可以使用此 cmdlet 来计算总和、最小值/最大值、标准差和平均值。
注意: Get-Content
cmdlet 具有 .Length
和 .Count
属性以及 Measure-Object -如果 CSV 文件末尾有空行,Line
将无法正常工作。
使用 Get-Content
和 .ReadCount
属性来获取给定 CSV 文件中的行数。
将 Get-Content 与 .ReadCount 属性结合使用:
$count = (Get-Content .\countries.csv).ReadCount
Write-Host "The number of lines that are read: " $count
输出 :
The number of lines that are read: 1 2 3 4 5 6
此方法在计算行数时还包括 CSV 文件的标题。当我们想知道已读取的行号时,使用 .ReadCount
非常有用;此处,最后一个数字将显示 countries.csv
文件中的总行数。
上面的脚本使用 Get-Content
cmdlet 将 countries.csv
的内容读取到对象中,然后访问的 .ReadCount
属性获取行数的对象。
.ReadCount
属性返回从文件中读取的行数。处理大文件时,此方法比以前的方法更快,因为它不会将整个文件加载到内存中。
此外,此方法不存在计算 countries.csv
末尾的空白行(如果有)的问题,因为它仅返回已从文件中读取的行数。
使用 Import-Csv
Cmdlet
可以通过以下方式使用 Import-Csv
cmdlet 来获取指定 .csv
文件中的行数:
- 带有
Measure-Object
cmdlet 的Import-Csv
cmdlet - 带有
Measure Object
和Select-Object
cmdlet 的Import-Csv
cmdlet - 具有
.Count
属性的Import-Csv
cmdlet
使用 Import-Csv
很有帮助,因为它会计算 CSV 文件中不包括标题的行数。下面我们就来一一学习一下。
结合使用 Import-Csv
cmdlet 和 Measure-Object
cmdlet 来获取 PowerShell 中 CSV 文件的行数。
将 Import-Csv 与 Measure-Object Cmdlet 结合使用:
Import-Csv .\countries.csv | Measure-Object
输出 :
Count: 5
在这里,我们使用了 Import-Csv,它将 countries.csv
文件转换为对象数组,并使用 Measure-Object
对其进行管道传输(我们在上一节中已经学习过),它将显示不包括标题的行数。如果我们只想得到一个计数,我们可以使用以下解决方案。
将 Import-Csv
cmdlet 与 Measure Object
和 Select-Object
cmdlet 结合使用,在 PowerShell 中获取 CSV 文件中的行数.
将 Import-Csv 与测量对象和选择对象结合使用:
Import-Csv .\countries.csv | Measure-Object | Select-Object -Expand Count
输出 :
5
它与前面的命令类似,产生相同的结果。尽管如此,我们还是使用了 Select-Object
cmdlet 和 - Expand
参数,允许我们扩展由 Measure-Object
返回的对象属性,并且返回 Count
属性的值,如上面的输出所示。
使用 Import-Csv
cmdlet 和 .Count
属性获取 PowerShell 中 CSV 文件的行数。
将 Import-Csv 与 .Count 属性结合使用:
(Import-Csv .\countries.csv).Count
输出 :
5
上面的命令执行相同的操作,显示指定 CSV 文件中的行数,但我们使用 .Count
属性来获取该计数。
注意:使用 Import-Csv
cmdlet 的上述所有方法都会将整个文件加载到内存中,因此对于大文件来说可能会很慢并消耗大量内存。此外,如果 CSV 文件末尾有空行,它将无法正常工作。
到目前为止,我们已经了解了获取 CSV 文件中的记录数的各种方法,但是如果项目需求发生了一些变化,需要统计当前目录和子目录中多个 CSV 文件的行数怎么办?让我们看看下面的部分。
将 Get-ChildItem
与 Foreach-Object
结合使用
将 Get-ChildItem
与 Foreach-Object
结合使用可从 PowerShell 中的当前目录和子目录获取多个 CSV 文件中的行数。
将 Get-ChildItem 与 Foreach-Object 结合使用:
Get-ChildItem "." -re -in "*.csv" |
Foreach-Object {
$fileStats = Get-Content $_.FullName | Measure-Object -line
$linesInFile = $fileStats.Lines -1
Write-Host "$_,$linesInFile"
}
输出 :
E:\Test\countries.csv,5
上面的脚本使用 Get-ChildItem
cmdlet 获取当前目录及其子目录中的所有 CSV 文件,由 -Recurse
参数指定(别名为 - re
)和 -Include
参数(别名为 -in
)用于仅包含扩展名为 .csv
的文件。然后使用 Foreach-Object
cmdlet 迭代集合中的每个文件。
对于每个文件,使用 Get-Content
cmdlet 读取文件的内容,并使用 -Line
将它们通过管道传输到 Measure-Object
cmdlet范围。 -Line
参数告诉 Measure-Object
计算输入中的行数。
Measure-Object
的输出存储在变量 $fileStats
中,减去 $linesInFile
后的行数存储在变量 $linesInFile
中code>1 排除标题行。
最后,使用Write-Host
cmdlet 将当前文件名和行数写入主机。当您想知道目录及其子目录中所有 CSV 文件的行数时,它非常有用。例如,我们只能使用以下命令来获取计数。
将 Get-ChildItem 与 Foreach-Object 结合使用:
Get-ChildItem . -Filter “*.csv” -Name |
ForEach-Object{
(Get-Content $_).Length - 1
}
输出 :
5
该命令与前一个命令类似,但有以下三点不同:我们使用 -Filter
参数仅包含以 .csv
扩展名结尾的文件,-Name
参数仅返回文件的名称文件而不是完整路径,而 .Length
用于获取行数。
这就是如何在 PowerShell 中获取 CSV 文件的行数。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag