【问题标题】:os.mknod() fails on MacOS?os.mknod() 在 MacOS 上失败?
【发布时间】:2015-11-13 22:42:34
【问题描述】:

os.mknod() 是 Mac 上的特权调用吗?总是失败,不允许操作?

In [1]: import os

In [2]: os.mknod("/tmp/test123")
---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
<ipython-input-2-1b8032a076af> in <module>()
----> 1 os.mknod("/tmp/test123")

OSError: [Errno 1] Operation not permitted

【问题讨论】:

    标签: python


    【解决方案1】:

    使用os.makedirs解决问题。

    【讨论】:

      【解决方案2】:

      很遗憾,mknod 需要升级权限。但是,如果您不需要 mknod,只需使用 open 创建文件,这不需要升级:

      open('/tmp/test123', 'w').close()
      

      如果除了创建文件之外还想写入文件:

      with open('/tmp/test123', 'w') as file:
          file.write('hello world')
      

      如上使用with会自动为你关闭文件。

      【讨论】:

        【解决方案3】:

        来自 OSX 手册页 https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man2/mknod.2.html

        Mknod() requires super-user privileges.
        

        除了无效参数外有效

        sudo python -c "import os; os.mknod('/tmp/test123')"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-01-14
          • 1970-01-01
          • 2021-01-20
          • 2018-08-07
          • 2020-03-31
          • 1970-01-01
          • 2022-11-13
          相关资源
          最近更新 更多