2016-02-13 86 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