Il parametro max_size
di tempfile.SpooledTemporaryFile()
è la dimensione massima del file temporaneo che può essere contenuto nella memoria (prima che venga versato sul disco). Quali sono le unità di questo parametro (byte? Kilobyte?)? La documentazione (sia per Python 2.7 e Python 3.4) non indica questo.SpooledTemporaryFile: unità di dimensioni massime (in memoria)?
6
A
risposta
8
La dimensione è in byte. Dalla SpooledTemporaryFile()
source code:
def _check(self, file):
if self._rolled: return
max_size = self._max_size
if max_size and file.tell() > max_size:
self.rollover()
e file.tell()
dà una posizione in byte.
Direi che qualsiasi uso del termine size
in connessione con oggetti file Python che è non espresso in byte garantisce una menzione esplicita. Tutti gli altri metodi di file che trattano in termini di size
funzionano sempre anche in byte.
Buon punto, a proposito di byte standard. Tuttavia, questa è una regola implicita che richiede una buona conoscenza di Python: penso che 'SpooledTemporaryFile()' dovrebbe esplicitamente indicare che la dimensione è in byte, in modo che * chiunque * possa usarla, senza molta cultura precedente di Python. Aprirò un problema su questo. – EOL
@EOL: Non sono sicuro che sia necessario; in C o Java o C# o in qualsiasi altra lingua con cui ho lavorato, quando si tratta di un oggetto file trattato con byte, o per supporto Unicode, codepoints. Solo quando si gestiscono le API di livello superiore o le interfacce utente inizi a vedere altre unità. –
Sono sicuro che non sarebbe costato molto aggiungere "in byte" nella documentazione: probabilmente costerebbe meno del tempo perso dalle persone che hanno la stessa domanda che ho avuto. Ho avuto questa domanda a causa di una delle tue risposte (dal 2012), dove hai usato la dimensione 1024 * 10: questo è estremamente piccolo, quindi mi stavo davvero chiedendo se fossero byte. – EOL