【发布时间】:2010-01-06 05:00:43
【问题描述】:
我有一个可以读取许多文件的 python 代码。 但是有些文件非常大,因此我在其他代码中出现错误。 我想要一种方法来检查文件的字符数,这样我就可以避免阅读那些非常大的文件。 谢谢。
【问题讨论】:
我有一个可以读取许多文件的 python 代码。 但是有些文件非常大,因此我在其他代码中出现错误。 我想要一种方法来检查文件的字符数,这样我就可以避免阅读那些非常大的文件。 谢谢。
【问题讨论】:
os.stat(filepath).st_size
假设“字符”是指字节。预计到达时间:
我需要总字符数,就像命令“wc 文件名”给我的 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
sys.getfilesystemencoding() 获取语言环境编码,复制 wc -m 所做的事情。如果您自己知道编码(例如“utf-8”),则将其传入。
我认为你不想这样做。
【讨论】:
os.path.getsize(filepath) 比os.stat(filepath).st_size 更容易记住(感谢@Sapph)
如果您希望给定特定编码的文本文件的 unicode 字符计数,则必须读取整个文件才能做到这一点。
但是,如果您想要给定文件的 byte 计数,则需要os.path.getsize(),只要您的操作系统有@987654323,就只需要在文件上执行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()
【讨论】: