как проверить счетчик символов файла в Python

У меня есть код Python, который читает много файлов. но некоторые файлы являются чрезвычайно большими, из-за которого у меня есть ошибки, прибывающие в другие коды. я хочу путь, которым я могу проверить на счетчик символов файлов так, чтобы я постарался не читать те чрезвычайно большие файлы.Спасибо.

6
задан randeepsp 6 January 2010 в 05:00
поделиться

5 ответов

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'), то передайте это вместо этого.

я не думаю, что вы хотите этого делать.

.
7
ответ дан 8 December 2019 в 04:29
поделиться

Если вы хотите, чтобы для текстового файла в заданной кодировке считался символ юникода -, то для этого нужно прочитать во всем файле.

Однако, если вы хотите, чтобы для данного файла считался байт -, то вы хотите --. path.getsize(), который должен делать только stat в файле, пока ваша операционная система имеет stat() или эквивалентный вызов (это делают все Unix и Windows).

.
7
ответ дан 8 December 2019 в 04:29
поделиться

Попробуйте

import os
os.path.getsize(filePath)

получить размер файла, в байтах.

5
ответ дан 8 December 2019 в 04:29
поделиться
os.path.getsize(path) 

Верните размер, в байтах, пути. Повысить ошибку os.error, если в файле нет Существуют или недоступны.

4
ответ дан 8 December 2019 в 04:29
поделиться

альтернативный способ

f=open("file")
os.fstat( f.fileno() ).st_size
f.close()
2
ответ дан 8 December 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: