2015-04-01 10 views

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.

+2

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

+0

@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à. –

+1

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