Obsługa plików za pomocą modułu os
Oprócz obiektu File zwróconego przez open()function, operacje we / wy na plikach mogą być również wykonywane przy użyciu wbudowanej biblioteki Pythona z modułem os, który zapewnia przydatne funkcje zależne od systemu operacyjnego. Te funkcje wykonują operacje odczytu / zapisu niskiego poziomu na pliku.
Plik open()funkcja z modułu os jest podobna do wbudowanej funkcji open (). Jednak nie zwraca obiektu pliku, ale deskryptor pliku, unikalną liczbę całkowitą odpowiadającą otwartemu plikowi. Wartości deskryptorów pliku 0, 1 i 2 reprezentują strumienie stdin, stdout i stderr. Inne pliki otrzymają przyrostowy deskryptor pliku od 2 wzwyż.
Jak w przypadku open() wbudowana funkcja, os.open()funkcja musi również określić tryb dostępu do pliku. Poniższa tabela zawiera listę różnych trybów zdefiniowanych w module os.
Sr.No. | Moduł Os i opis |
---|---|
1 | os.O_RDONLY Otwarte tylko do odczytu |
2 | os.O_WRONLY Otwarte tylko do pisania |
3 | os.O_RDWR Otwarte do czytania i pisania |
4 | os.O_NONBLOCK Nie blokuj po otwarciu |
5 | os.O_APPEND Dołącz do każdego zapisu |
6 | os.O_CREAT Utwórz plik, jeśli nie istnieje |
7 | os.O_TRUNC Obetnij rozmiar do 0 |
8 | os.O_EXCL Błąd, jeśli istnieje tworzenie i plik |
Aby otworzyć nowy plik do zapisywania w nim danych, określ O_WRONLY jak również O_CREATtryby, wstawiając operator potoku (|). Funkcja os.open () zwraca deskryptor pliku.
f=os.open("test.dat", os.O_WRONLY|os.O_CREAT)
Zauważ, że dane są zapisywane do pliku dyskowego w postaci ciągu bajtów. W związku z tym zwykły ciąg jest konwertowany na ciąg bajtów za pomocą funkcji encode (), jak wcześniej.
data="Hello World".encode('utf-8')
Funkcja write () w module os akceptuje ten ciąg bajtów i deskryptor pliku.
os.write(f,data)
Nie zapomnij zamknąć pliku za pomocą funkcji close ().
os.close(f)
Aby odczytać zawartość pliku za pomocą funkcji os.read (), użyj następujących instrukcji:
f=os.open("test.dat", os.O_RDONLY)
data=os.read(f,20)
print (data.decode('utf-8'))
Zauważ, że funkcja os.read () wymaga deskryptora pliku i liczby bajtów do odczytania (długość ciągu bajtów).
Jeśli chcesz otworzyć plik do jednoczesnych operacji odczytu / zapisu, użyj trybu O_RDWR. Poniższa tabela przedstawia ważne funkcje związane z operacjami na plikach w module systemu operacyjnego.
Sr.No | Funkcje i opis |
---|---|
1 | os.close(fd) Zamknij deskryptor pliku. |
2 | os.open(file, flags[, mode]) Otwórz plik i ustaw różne flagi zgodnie z flagami i prawdopodobnie jego trybem zgodnie z trybem. |
3 | os.read(fd, n) Odczytaj co najwyżej n bajtów z deskryptora pliku fd. Zwraca ciąg zawierający odczytane bajty. Jeśli osiągnięto koniec pliku, do którego odwołuje się fd, zwracany jest pusty łańcuch. |
4 | os.write(fd, str) Zapisz łańcuch str do deskryptora pliku fd. Zwraca liczbę faktycznie zapisanych bajtów. |