Ho un codice Python che legge molti file. ma alcuni file sono estremamente grandi a causa dei quali sono presenti errori in altri codici. voglio un modo in cui posso verificare il numero di caratteri dei file in modo da evitare di leggere quei file estremamente grandi. Grazie.come controllare il numero di caratteri di un file in python
risposta
os.stat(filepath).st_size
Supponendo che da ‘personaggi’ Vuoi dire byte. ETA:
ho bisogno conteggio totale carattere proprio come quello che il comando 'nome del file wc' mi dà unix
In quali modalità? wc
da solo fornirà una riga, un numero di parole e byte (uguale a stat
), non caratteri Unicode.
è un interruttore -m
che utilizzerà la codifica corrente del locale per convertire i byte a Unicode e poi contare code-punti: è davvero questo che vuoi? Non ha senso decodificare in Unicode se tutto quello che stai cercando sono file troppo lunghi. Se davvero necessario:
import sys, codecs
def getUnicodeFileLength(filepath, charset= None):
if charset is None:
charset= sys.getfilesystemencoding()
readerclass= codecs.getReader(charset)
reader= readerclass(open(filepath, 'rb'), 'replace')
nchar= 0
while True:
chars= reader.read(1024*32) # arbitrary chunk size
if chars=='':
break
nchar+= len(chars)
reader.close()
return nchar
sys.getfilesystemencoding()
ottiene la codifica locale, riproducendo ciò wc -m
fa. Se conosci tu stesso la codifica (es. 'Utf-8'), allora passa quella in.
Non penso che vogliate fare questo.
os.path.getsize(path)
ritorno la dimensione, in byte, di percorso. Aumentare os.error se il file non è esistente o non accessibile.
Prova
import os
os.path.getsize(filePath)
per ottenere la dimensione del file, in byte.
Se si desidera che il codice unicode contenga il numero per un file di testo con una codifica specifica, è necessario leggere l'intero file per farlo.
Tuttavia, se si desidera che il conteggio di byte per un dato file, si vuole os.path.getsize()
, che dovrebbe solo bisogno di fare un stat
sul file fino a quando il sistema operativo ha stat()
o una chiamata equivalente (tutti i sistemi Unix e di Windows fare).
A causa degli schemi di codifica UTF, è possibile che tu possa avere caratteri con un numero variabile di byte. –
modo alternativo
f=open("file")
os.fstat(f.fileno()).st_size
f.close()
Ciao Bob, Ho bisogno di conteggio totale carattere proprio come quello che il comando 'nome del file wc' mi dà unix – randeepsp
@randeepsp: aggiornare la tua domanda con informazioni aggiuntive. Non aggiungere questo tipo di informazioni importanti nei commenti. –
Per il conteggio dei byte, 'os.path.getsize (percorso file)' è più facile da ricordare di 'os.stat (filepath) .st_size' (grazie @Sapph) – hobs