Szukaj…


Wprowadzenie

Moduł zapewnia przenośny sposób korzystania z funkcji zależnych od systemu operacyjnego.

Składnia

  • import os

Parametry

Parametr Detale
Ścieżka Ścieżka do pliku. Separator ścieżek można określić za pomocą os.path.sep .
Tryb Pożądane pozwolenie, ósemkowe (np. 0700 )

Utwórz katalog

os.mkdir('newdir')

Jeśli musisz określić uprawnienia, możesz użyć argumentu mode opcjonalnego:

os.mkdir('newdir', mode=0700)

Pobierz bieżący katalog

Użyj funkcji os.getcwd() :

print(os.getcwd())

Określ nazwę systemu operacyjnego

Moduł os zapewnia interfejs do określania, jakiego rodzaju systemu operacyjnego aktualnie używa kod.

os.name

Może to zwrócić jeden z następujących elementów w Pythonie 3:

  • posix
  • nt
  • ce
  • java

Bardziej szczegółowe informacje można znaleźć na stronie sys.platform

Usuń katalog

Usuń katalog ze path :

os.rmdir(path)

Nie należy używać os.remove() do usuwania katalogu. Ta funkcja dotyczy plików, a użycie jej w katalogach spowoduje OSError

Postępuj zgodnie z dowiązaniem symbolicznym (POSIX)

Czasami musisz określić cel dowiązania symbolicznego. os.readlink zrobi to:

print(os.readlink(path_to_symlink))

Zmień uprawnienia do pliku

os.chmod(path, mode)

gdzie mode jest pożądanym uprawnieniem, ósemkowo.

makedirs - rekurencyjne tworzenie katalogu

Biorąc pod uwagę lokalny katalog o następującej treści:

 └── dir1
     ├── subdir1
     └── subdir2

Chcemy stworzyć ten sam podkatalog1, podkatalog2 w nowym katalogu katalog2, który jeszcze nie istnieje.

import os

os.makedirs("./dir2/subdir1")
os.makedirs("./dir2/subdir2")

Uruchomienie tego powoduje

├── dir1
│   ├── subdir1
│   └── subdir2
└── dir2
    ├── subdir1
    └── subdir2

katalog2 jest tworzony tylko za pierwszym razem, gdy jest potrzebny, do tworzenia katalogu subdir1.

Gdybyśmy zamiast tego używali os.mkdir , mielibyśmy wyjątek, ponieważ dir2 jeszcze by nie istniał.

    os.mkdir("./dir2/subdir1")
OSError: [Errno 2] No such file or directory: './dir2/subdir1'

os.makedirs nie spodoba się, jeśli katalog docelowy już istnieje. Jeśli ponownie uruchomimy go ponownie:

OSError: [Errno 17] File exists: './dir2/subdir1'

Można to jednak łatwo naprawić, wychwytując wyjątek i sprawdzając, czy katalog został utworzony.

try:
    os.makedirs("./dir2/subdir1")
except OSError:
    if not os.path.isdir("./dir2/subdir1"):
        raise

try:
    os.makedirs("./dir2/subdir2")
except OSError:
    if not os.path.isdir("./dir2/subdir2"):
        raise


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow