У меня есть код Python, который читает много файлов. но некоторые файлы являются чрезвычайно большими, из-за которого у меня есть ошибки, прибывающие в другие коды. я хочу путь, которым я могу проверить на счетчик символов файлов так, чтобы я постарался не читать те чрезвычайно большие файлы.Спасибо.
os.stat(filepath).st_size
Предполагая, что под 'символами' подразумеваются байты. ETA:
Мне нужно общее количество символов, как и в команде 'wc filename', которая дает мне unix
В каком режиме? wc
сам по себе даст вам счет строк, слов и байтов (как stat
), а не символов Юникода.
Есть - переключатель -m
, который будет использовать текущую кодировку локали для преобразования байтов в Юникод и последующего подсчета кодовых точек: это действительно то, что вам нужно? Нет смысла декодировать в Юникод, если все, что вы ищете - это длинные файлы. Если вам действительно нужно:
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'), то передайте это вместо этого.
я не думаю, что вы хотите этого делать.
.Если вы хотите, чтобы для текстового файла в заданной кодировке считался символ юникода -, то для этого нужно прочитать во всем файле.
Однако, если вы хотите, чтобы для данного файла считался байт -, то вы хотите -
-. path.getsize()
, который должен делать только stat
в файле, пока ваша операционная система имеет stat()
или эквивалентный вызов (это делают все Unix и Windows).
Попробуйте
import os
os.path.getsize(filePath)
получить размер файла, в байтах.
os.path.getsize(path)
Верните размер, в байтах, пути. Повысить ошибку os.error, если в файле нет Существуют или недоступны.
альтернативный способ
f=open("file")
os.fstat( f.fileno() ).st_size
f.close()