当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何在PowerShell中逐行读取文件到数组中?

作者:精品下载站 日期:2024-12-14 05:07:33 浏览:16 分类:玩电脑

如何在PowerShell中逐行读取文件到数组中?


您想在 PowerShell 中逐行读取文件吗?在本 PowerShell 教程中,我将解释如何使用各种方法在 PowerShell 中将文件逐行读取到数组中。

要在 PowerShell 中将文件逐行读取到数组中,请使用 Get-Content cmdlet,它会自动返回字符串数组,文件中的每一行都作为数组中的一个元素。例如,$array=Get-Content -Path ‘filename.txt’ 读取 ‘filename.txt’ 并将每一行存储为 $array 中的一个元素。

在 PowerShell 中将文件逐行读取到数组中

在 PowerShell 中,有多种方法可以将文件逐行读取到数组中。让我们通过示例来查看每种方法:

1. 使用获取内容

在 PowerShell 中,将文件逐行读入数组的最简单方法是使用 Get-Content cmdlet。此 cmdlet 读取文件的每一行并创建一个数组,其中每一行都是该数组的一个元素。

这是一个完整的例子。

# Read file into an array
$lines = Get-Content -Path "C:\Bijay\fruits.txt"

# Display the array
$lines

在此示例中,Get-Content 读取“fruits.txt”并将每一行作为元素存储在 $lines 数组中。然后,您可以使用数组中的索引来操作或访问这些行。

您可以在下面的屏幕截图中看到输出;我使用 VS code 执行了该脚本。

[玩转系统] 如何在PowerShell中逐行读取文件到数组中?

2. 使用 Import-CSV

如果您正在读取的文件的结构为 CSV(逗号分隔值),则可以使用 Import-Csv cmdlet。此 cmdlet 读取 CSV 文件并创建自定义对象数组,其中每个对象代表 CSV 文件中的一行。

这是一个例子。

# Read CSV file into an array of objects
$rows = Import-Csv -Path "C:\path\to\your\file.csv"

# Display the array
$rows

$rows 数组中的每个对象都将具有与 CSV 文件中的列标题相对应的属性。

方法 3:使用 StreamReader

对于非常大的文件,Get-Content可能不是最有效的方法,因为它将整个文件读取到内存中。在这种情况下,您可以使用 System.IO 命名空间中的 StreamReader 类。这允许您逐行读取文件,而无需将整个文件加载到内存中。

以下是使用 StreamReader 在 PowerShell 中将文件逐行读取到数组中的示例。

# Create a StreamReader object
$reader = [System.IO.StreamReader] "C:\path\to\your\file.txt"

# Create an array to hold the lines
$lines = @()

# Read each line from the file and add it to the array
while ($line = $reader.ReadLine()) {
    $lines += $line
}

# Close the StreamReader
$reader.Close()

# Display the array
$lines

此方法更节省内存,更适合大文件。

方法 4:使用 ForEach-Object

在 PowerShell 中将文件读入数组的另一种方法是结合使用 ForEach-Object cmdlet 和 Get-Content。此方法允许您在读取时处理每一行,这对于动态过滤或修改数据非常有用。

这是一个例子:

# Read file and use ForEach-Object to process each line
$lines = Get-Content -Path "C:\path\to\your\file.txt" | ForEach-Object {
    # Process each line here if needed
    $_
}

# Display the array
$lines

在此示例中,$_ 表示当前正在处理的行。您可以在脚本块 {} 内添加任何处理代码。

结论

PowerShell 提供了多种将文件逐行读入数组的方法,每种方法都有自己的用例和优点。对于中小型文件,Get-Content 是最简单、最直接的方法。对于 CSV 文件,Import-Csv 是一个功能强大的 cmdlet,可创建具有属性的对象数组。对于大文件,请考虑使用 StreamReader 以避免高内存使用率。最后,当您需要在读取行时对其进行处理时,可以使用 ForEach-Object

在本教程中,我通过示例解释了如何使用不同的方法在 PowerShell 中逐行读取文件到数组中

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯