2016-02-13 60 views
3

我在Linux上,此命令,我有问题转换成type在Windows上:计算行的文件数量-l

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 

请帮助我。谢谢。

+0

什么是运行方法?而'wc'不是本机窗口的二进制 –

+0

此语句用于查找词汇表文件中的行数并将其打印出来。是的,我想知道是否有这个声明的等价物,因为这是在linux中运行的。谢谢 – windboy

+0

如果它在linux中运行,为什么要给它一个Windows文件系统路径? –

回答

3

您正在尝试计算文件中的行数?为什么你不能在纯Python中做到这一点?

这样的事情?

with open('C:/Users/Kyle/Documents/final/VocabCorpus.txt') as f: 
    row = len(f.readlines()) 
+2

稍微好一点的版本是'sum(1代表f中的行)',它消耗更少的内存:''f.readlines()''读取整个文件, 'f''一次只能产生一行。 – y0prst

-1

其实wc计数文件(proof\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