我有一个PowerShell脚本,可以在处理非常大的XML时将大量行转储到csv文件中.
在读取xml阅读器的过程中,我将每行写入csv文件,如下所示:
$newline | add-content -path $csv_file
Run Code Online (Sandbox Code Playgroud)
这适用于99%,但偶尔我在日志中看到"添加内容:流不可读"的1或2个项目中的gazillions,我认为因为它正在忙着写过去的行.
任何决议?
它是一个旧帖子,但我遇到了类似的问题(使用Set-Content而不是Add-Content).就我而言,WriteAllText方法解决了这个问题.
这应该为你解决:
[System.IO.File]::AppendAllText($csv_file,$newline)
Run Code Online (Sandbox Code Playgroud)
如果您不想调用 Windows API,这里有一个 PowerShell 方法。在 do 循环中放入 try catch 块以重试,直到成功。
$isWritten = $false
do {
try {
Add-Content -Path $csv_file -Value $newline -ErrorAction Stop
$isWritten = $true
}
catch {
}
} until ( $isWritten )
}
Run Code Online (Sandbox Code Playgroud)