2010-01-06 4 views

risposta

8
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.

Ci

è 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.

+0

Ciao Bob, Ho bisogno di conteggio totale carattere proprio come quello che il comando 'nome del file wc' mi dà unix – randeepsp

+0

@randeepsp: aggiornare la tua domanda con informazioni aggiuntive. Non aggiungere questo tipo di informazioni importanti nei commenti. –

+0

Per il conteggio dei byte, 'os.path.getsize (percorso file)' è più facile da ricordare di 'os.stat (filepath) .st_size' (grazie @Sapph) – hobs

4
os.path.getsize(path) 

ritorno la dimensione, in byte, di percorso. Aumentare os.error se il file non è esistente o non accessibile.

5

Prova

import os 
os.path.getsize(filePath) 

per ottenere la dimensione del file, in byte.

7

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).

+0

A causa degli schemi di codifica UTF, è possibile che tu possa avere caratteri con un numero variabile di byte. –

2

modo alternativo

f=open("file") 
os.fstat(f.fileno()).st_size 
f.close()