Vad gör avkortning av en fil när man öppnar en fil med alternativet w + i python?


Bästa svaret

Du frågar: Vad gör avkortning av en fil när man öppnar en fil med w + -alternativet i python?

Att avkorta en fil till noll betyder att man kasserar allt innehåll: filstorleken blir 0, så den blir tom (och data är borta), men filen finns fortfarande i filsystemet.

På UNIX och UNIX-liknande operativsystem (och i allmänhet på POSIX -kompatibla operativsystem) finns det truncate(2) systemanrop som kan användas för att kasta en del av eller hela innehållet i en fil (mot slutet av en fil).

På sådana system kan open(2) systemanrop anges en flaggor som anger parametern O\_TRUNC flagga som talar om att filinnehållet ska trunkeras till 0 när det öppnas.

På samma sätt är C-standard I / O-biblioteket funktion fopen() kan anges ett öppningsläge w+ som indikerar att filen öppnas för skrivning och att den ska skapas om den inte Det finns inte, eller att det ska trunkeras till 0 om det redan finns.

Och eftersom open() -funktionen i Python fungerar på samma sätt som fopen() -funktion i C, w+ betyder att trunka filinnehåll till noll längd innan du skriver något.

Svar

frågan behöver mer förtydligas. Vem gör trunkeringen? Samma pythonprocess som öppnade strömmen eller någon annan process? Skriver pythonfilen till filen när en annan tråd / process trunkerar den? Händer den avkortade åtgärden i en slinga eller något?

Svaret på din fråga beror på vad som händer med filen när dessa skriv- och trunkeringsåtgärder pågår….

Också … protip: titta inte på python2-dokument. Titta på python3-dokument. Och använd python3 i allmänhet

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *