如何扩展python脚本来计算大文件?
我有代码来计算文件中的字数。它可以用于小于500 MB的小文件。在开始计数之前,我必须将整个文件保存在内存中,否则计数会出错。此代码读取文件并将其存储到RAM中,然后对其进行处理。如果我逐行读取,则计数中会有错误(如何扩展python脚本来计算大文件?,python,file,counter,Python,File,Counter,我有代码来计算文件中的字数。它可以用于小于500 MB的小文件。在开始计数之前,我必须将整个文件保存在内存中,否则计数会出错。此代码读取文件并将其存储到RAM中,然后对其进行处理。如果我逐行读取,则计数中会有错误(readline()) 当文件较大时,它会生成 Memory error 当我们使用read line()Counter()时,倾向于计算行中的字,而不是整个文件 如何在不将整个文件存储到内存的情况下计算字数?请检查此代码。 我不知道这是否有帮助 def filePro(filena
readline()
)
当文件较大时,它会生成
Memory error
当我们使用read line()Counter()
时,倾向于计算行中的字,而不是整个文件
如何在不将整个文件存储到内存的情况下计算字数?请检查此代码。 我不知道这是否有帮助
def filePro(filename):
f=open(filename,'r')
wordcount=0
for lines in f:
f1=lines.split()
wordcount=wordcount+len(f1)
f.close()
print 'word count:', str(wordcount)
filePro(raw_input("enter file name:"))
您不必将整个文件都存储在内存中。你可以一行一行地数数单词(当然,你不能在每一行之后重置计数器,所以列表理解在这里不起作用)
在逐行阅读时,您会遇到什么问题?您有没有理由不能从linux命令行中计算字数?ls-wc@AshwiniChaudhary字数不同,这是原因errors@karu请仔细阅读链接。问题是“有没有办法在不将整个文件存储到内存的情况下计算单词数?”???因此,解决方案将在链接中解释。“借助指针读取文件。”这就解决了你的问题。但是,如果你正在搜索一个将代替你编写代码的人,那么“是”不在链接中……这假设单词不会跨多行(可能所有其他答案都会跨多行)。一行:
sum((Counter(line.split())for line in f),Counter())
,但OP提到逐行的方法对他们不起作用,但细节还不够。(您也可以放弃str.rstrip
调用)@Tim,当第一行中有一个单词,而最后一行中只有一个单词时,会发生什么情况呢word@karu为什么不测试它?@RedX,它会增加内存使用,然后停止。这里的问题不同,它不仅仅是计数
def filePro(filename):
f=open(filename,'r')
wordcount=0
for lines in f:
f1=lines.split()
wordcount=wordcount+len(f1)
f.close()
print 'word count:', str(wordcount)
filePro(raw_input("enter file name:"))
import collections
counter = collections.Counter()
with open('Prabhodhanam.txt', 'r', encoding='utf8') as infh:
for line in infh:
counter.update(line.strip().split())
with open('file.txt', 'wb') as f:
for word, count in counter.most_common(10000000):
f.write(u'{} {}\n'.format(word, count).encode('utf8'))