Co powoduje obcięcie pliku podczas otwierania pliku z opcją w + w pythonie?


Najlepsza odpowiedź

Pytasz: Co powoduje obcięcie pliku podczas otwierania pliku z opcją w + w Pythonie?

Obcięcie pliku do zera oznacza odrzucenie całej jego zawartości: rozmiar pliku wynosi 0, więc staje się pusty (i dane zniknęły), ale plik nadal istnieje w systemie plików.

W systemach operacyjnych UNIX i UNIX-podobnych (i ogólnie w POSIX -kompatybilne systemy operacyjne) istnieje wywołanie systemowe truncate(2), które może być użyte do usunięcia części lub całości zawartości pliku (pod koniec pliku).

W takich systemach wywołanie systemowe open(2) można określić jako parametr flagi określający Flaga O\_TRUNC informująca, że ​​zawartość pliku powinna zostać obcięta do 0 podczas jego otwierania.

Podobnie, standardowa biblioteka we / wy C funkcja fopen() można określić tryb otwierania w+ wskazujący, że plik jest otwierany do zapisu i że powinien zostać utworzony, jeśli tak się nie stanie t istnieje lub że powinno zostać obcięte do 0, jeśli już istnieje.

A ponieważ funkcja open() w Pythonie działa podobnie do funkcji fopen() w C, w+ oznacza skrócenie zawartości pliku do zera przed zapisaniem czegokolwiek.

Odpowiedź

pytanie wymaga dokładniejszego wyjaśnienia. Kto dokonuje obcinania? Ten sam proces w Pythonie, który otworzył strumień, czy inny proces? Czy plik Pythona zapisuje do pliku, ponieważ inny wątek / proces obcina go? Czy operacja obcięcia jest zapętlona, ​​czy coś takiego?

Odpowiedź na Twoje pytanie zależy od tego, co dzieje się z plikiem, gdy wykonywane są te operacje zapisu i obcięcia….

Ponadto… protip: nie patrz na dokumentację Python2. Spójrz na dokumentację Python3. I ogólnie używaj python3

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *