Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何扩展python脚本来计算大文件?_Python_File_Counter - Fatal编程技术网

如何扩展python脚本来计算大文件?

如何扩展python脚本来计算大文件?,python,file,counter,Python,File,Counter,我有代码来计算文件中的字数。它可以用于小于500 MB的小文件。在开始计数之前,我必须将整个文件保存在内存中,否则计数会出错。此代码读取文件并将其存储到RAM中,然后对其进行处理。如果我逐行读取,则计数中会有错误(readline()) 当文件较大时,它会生成 Memory error 当我们使用read line()Counter()时,倾向于计算行中的字,而不是整个文件 如何在不将整个文件存储到内存的情况下计算字数?请检查此代码。 我不知道这是否有帮助 def filePro(filena

我有代码来计算文件中的字数。它可以用于小于500 MB的小文件。在开始计数之前,我必须将整个文件保存在内存中,否则计数会出错。此代码读取文件并将其存储到RAM中,然后对其进行处理。如果我逐行读取,则计数中会有错误(
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'))