如何在python中检查文件的字符数

ran*_*psp 6 python size character

我有一个python代码,可以读取许多文件.但是有些文件非常大,因为我在其他代码中有错误.我想要一种方法,我可以检查文件的字符数,以便我避免阅读那些非常大的文件.谢谢.

bob*_*nce 7

os.stat(filepath).st_size
Run Code Online (Sandbox Code Playgroud)

假设"字符"表示字节.ETA:

我需要总字符数,就像命令'wc filename'给我unix一样

在哪种模式?wc它自己会给你一个行,字和字节数(相同stat),而不是Unicode字符.

这里是一个开关-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
Run Code Online (Sandbox Code Playgroud)

sys.getfilesystemencoding()获取语​​言环境编码,重现什么wc -m.如果您自己知道编码(例如'utf-8'),则将其传入.

我认为你不想这样做.


Mik*_*ike 7

如果您希望给定特定编码的文本文件的unicode 字符数,则必须读入整个文件才能执行此操作.

但是,如果你想要给定文件的字节数,你需要os.path.getsize(),stat只要你的操作系统有stat()一个或同等的调用(所有的Unix和Windows都可以),它只需要对文件执行一次.


Sap*_*pph 5

尝试

import os
os.path.getsize(filePath)
Run Code Online (Sandbox Code Playgroud)

获取文件的大小,以字节为单位.