Python-检查linux分区是只读还是读写?

Bor*_*w37 1 python linux

我有一个在beaglebone上运行的python应用程序。如何(在Python中)检查“ / mnt”分区是否以只读或读写方式安装?

Vad*_*int 7

解决方案非常简单,只有 1 个系统调用(statvfs)。

stat = os.statvfs('/mnt')

# Python < 3.2
ST_RDONLY = 1
readonly = bool(stat.f_flag & ST_RDONLY)

# Python >= 3.2
readonly = bool(stat.f_flag & os.ST_RDONLY)
Run Code Online (Sandbox Code Playgroud)


And*_*ler 5

编辑:答案做出了您计划写入/ mnt的假设。

我只是尝试写它并捕获OSError异常来处理只读情况。

  • 为什么投反对票?我相信这是一种有效的方法,因为它避免了检查和实际写入之间状态变化的竞争条件。 (2认同)
  • 同意。您_可以_使用 `os.access(dirname, os.W_OK)`,但正如文档所说:`注意:使用 access() 检查用户是否有权打开文件,然后再使用 open() 实际执行此操作会创建一个安全漏洞,因为用户可能会利用检查和打开文件之间的短暂时间间隔来操纵它。`另外,`注意:即使 access() 指示它们会成功,I/O 操作也可能会失败,特别是对于网络文件系统的权限语义可能超出通常的 POSIX 权限位模型。 (2认同)
  • 我正在尝试防止可能的SD卡损坏。这个想法是(通过cherry-py网络服务器)用户可以看到分区的状态,并能够在使用WinSCP将文件上传到分区之前手动将其设置为ro / rw。用户需要知道分区是RO还是RW来作为警告。 (2认同)
  • 在这种情况下,杰米·科伯恩就有了答案 (2认同)
  • @Borisw37:啊。在这种情况下,您应该将该信息编辑到您的问题中。 (2认同)