使用Python和wc -l计算文件中的行数

3

我在Linux上有一个命令,但是我不知道如何在Windows上转换为type命令:

row = run('cat '+'C:/Users/Kyle/Documents/final/VocabCorpus.txt'+" | wc -l").split()[0]

“wc -l”命令用于计算行数,以查看有多少行存在。如果我想改成使用“type”命令,应该怎么写呢?

我尝试了这个方法,但它并不起作用。

 row = run('type '+'C:/Users/Kyle/Documents/final/VocabCorpus.txt'+" | wc -l").split()[0]

运行命令如下:

def run(command):
    output = subprocess.check_output(command, shell=True)
    return output

请帮助我。谢谢。


这个语句是用来从词汇文件中查找行数并将其打印出来的。我想知道在Linux中是否有相应的语句。谢谢。 - windboy
再次提醒,Windows计算机上的默认shell是cmd。如果您在cmd中键入wc,则会显示“未找到命令”。虽然您没有展示错误信息,但我可以保证这就是问题所在。 - OneCricketeer
我尝试了这个解决方案并删除了该行。它也提供了错误,我现在不确定该怎么办。 - windboy
什么错误?你能否请更新你的问题并提供这些信息? - OneCricketeer
这更像是一个逻辑错误,我已经找到了问题。非常感谢您的帮助 :) - windboy
显示剩余6条评论
2个回答

5
你想要计算文件中的行数吗?为什么不能用纯Python完成呢?
像这样的代码:
with open('C:/Users/Kyle/Documents/final/VocabCorpus.txt') as f:
    row = len(f.readlines())

4
一个稍微更好的版本是"sum(1 for line in f)",它消耗的内存较少:而"f.readlines()"会一次性读取整个文件,而迭代"f"则每次只会产生一行。 - y0prst

0
实际上wc会计算文件中的\n符号(证明)。如果您有大文件并想节省一些内存,最好按块读取以使内存消耗为O(1):
CHUNK_SIZE = 4096

def wc_l(filepath):
    nlines = 0
    with open(filepath, 'rb') as f:
        while True:
            chunk = f.read(CHUNK_SIZE)
            if not chunk:
                break
            nlines += sum(1 for char in chunks if char == '\n')
    return nlines

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接