os.stat(filepath).st_size
Предполагая, что под "символами" вы подразумеваете байты. ETA:
Мне нужно общее количество символов, так же как и то, что команда 'wc filename' дает мне unix
В каком режиме? wc
само по себе даст вам количество строк, слов и байтов (такое же, как stat
), а не символы Юникода.
Там - это переключатель -m
, который будет использовать текущую кодировку локали для преобразования байтов в Unicode, а затем подсчитывать кодовые точки: это действительно то, что вы хотите? Нет смысла декодировать в Unicode, если вам нужны только слишком длинные файлы. Если вы действительно должны:
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()
получает кодировку локали, воспроизводящую то, что делает wc -m
. Если вы знаете кодировку самостоятельно (например, 'utf-8'), тогда передайте это вместо.
Не думаю, что вы хотите это сделать.