Ist os.mknod() ein privilegierter Anruf auf dem Mac? Es scheitert immer mit Betrieb nicht erlaubt?

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
6
python152 20 Aug. 2015 im 13:25

3 Antworten

Beste Antwort

Auf der OSX-Manpage https: // Entwickler .apple.com / library / mac / documentation / Darwin / Reference / ManPages / man2 / mknod.2.html

Mknod() requires super-user privileges.

Funktioniert mit Ausnahme des ungültigen Arguments

sudo python -c "import os; os.mknod('/tmp/test123')"
7
HelloWorld 20 Aug. 2015 im 10:28

Leider erfordert mknod eskalierte Berechtigungen. Wenn Sie mknod nicht speziell benötigen, erstellen Sie die Datei einfach mit open, was keine Eskalation erfordert:

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

Wenn Sie zusätzlich zum Erstellen in die Datei schreiben möchten:

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

Wenn Sie with wie oben verwenden, wird die Datei automatisch für Sie geschlossen.

5
Cory Klein 6 Sept. 2019 im 15:40

Die Verwendung von os.makedirs löst das Problem.

0
Sarriman 17 Okt. 2019 im 12:15