Go 的标准库没有专门用于检查文件是否存在的函数(如 Python 的 os.path.exists
)。 惯用 的方法是什么?
原文由 Sridhar Ratnakumar 发布,翻译遵循 CC BY-SA 4.0 许可协议
Go 的标准库没有专门用于检查文件是否存在的函数(如 Python 的 os.path.exists
)。 惯用 的方法是什么?
原文由 Sridhar Ratnakumar 发布,翻译遵循 CC BY-SA 4.0 许可协议
由 Caleb Spare 在 gonuts 邮件列表中发布的回答。
[…] 它实际上并不经常需要并且 […] 使用
os.Stat
对于需要它的情况来说很容易。[…] 例如:如果你要打开文件,没有理由先检查它是否存在。该文件可能会在检查和打开之间消失,无论如何您都需要检查
os.Open
错误。因此,您只需在尝试打开文件后调用os.IsNotExist(err)
并在那里处理它的不存在(如果需要特殊处理)。[…] 你根本不需要检查存在的路径(你不应该)。
os.MkdirAll
无论路径是否已经存在都有效。 (您还需要检查该调用的错误。)而不是使用
os.Create
,你应该使用os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0666)
。这样,如果文件已经存在,您将收到错误消息。此外,这与制作文件的其他内容没有竞争条件,这与您事先检查是否存在的版本不同。
取自: https ://groups.google.com/forum/#!msg/golang-nuts/Ayx-BMNdMFo/4rL8FFHr8v4J
原文由 OscarRyz 发布,翻译遵循 CC BY-SA 3.0 许可协议
7 回答5.3k 阅读
6 回答6.9k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.4k 阅读
2 回答880 阅读✓ 已解决
2 回答2.2k 阅读
1 回答2.1k 阅读
检查文件是否不存在,相当于 Python 的
if not os.path.exists(filename)
:检查文件是否存在,相当于 Python 的
if os.path.exists(filename)
:编辑:根据最近的评论