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