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