【问题标题】:Powershell write to a CSV while it's openPowershell 在打开时写入 CSV
【发布时间】:2018-05-02 17:38:14
【问题描述】:

我有一个基本上 24/7 运行的进程。它将数据写入 CSV,但我希望能够定期读取该 CSV。问题是即使文件以只读模式打开,Export-Csv 似乎也会失败。

有问题的 CSV 文件已被标记为只读,因此我在脚本中对其进行的所有写入都使用强制开关。这工作正常,但第二次我在 excel 中打开文件(甚至在 Windows 资源管理器中查看它的属性)脚本开始出错。

我想要做的就是使用 export-csv 写入 CSV,同时还允许 excel 以只读模式打开该 csv。这是可能的还是我需要想出一些方法来创建文件的辅助副本以供查看?

【问题讨论】:

  • 我不相信这是可能的,因为 MS 锁定了文件。如果您共享工作簿,它可能会起作用。但是,您不能不共享 csv。我会更倾向于 DB 解决方案,比如 SQLite
  • 如何在excel中打开文件?手动?通过脚本?
  • 我在属性中检查了只读,并且能够在它以只读模式打开时更新 csv,使用强制开关。
  • 另一个想法,如果 CSV 不是经常打开的,你可以使用System.IO.FileInfo 来检查 CSV 是否打开。如果是这样,请等待它关闭后再继续。
  • 我尚未验证,但如果应用程序可以对标记为只读的文件设置读写锁,我不会感到惊讶。文件系统只会阻止稍后保存的尝试。我猜想在 Excel 中打开文件,Wordpad ++ 会给你带来问题,而在记事本或 PowerShell 中打开它(使用 [System.IO.File] 和只读权限)会因为他们的代码方式而正常工作打开文件

标签: powershell csv export-to-csv


【解决方案1】:

Office 套件倾向于锁定它打开的文件(我做出这个假设是因为您使用的是 CSV)。如果您在notepad.exe 中打开文件,您遇到的问题将不再发生。

【讨论】:

  • 谢谢。在测试了您的建议后,我可以确认使用记事本、VS Code 和其他应用程序打开 csv 时问题没有产生相同的问题。似乎问题在于 Excel 没有正确尊重只读属性并以锁定文件的方式打开文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
  • 2021-12-10
相关资源
最近更新 更多