2014-01-21 18 views
2

請原諒我問一個簡單的python問題。這是我第一次使用python。在我的python腳本執行後打印這個數字是什麼

我正在寫這個腳本的Mac書專業版現在。稍後它可能會部署在Centos服務器上。腳本抓取獲取文件作爲參數。我將在稍後處理輸出。

#!/usr/bin/python 
import sys 
import subprocess 

if len(sys.argv) < 2: 
    print ("Not enough arguments") 
    print ("Usage: " + sys.argv[0] + " log_file output_file") 
    print ("i.e. " + sys.argv[0] + " stream.log output.csv") 
    sys.exit(1) 
else: 
    input = open (sys.argv[1]) 
    output = open (sys.argv[2],'w') 

proc = subprocess.Popen("cat " + input.name + " | cut -d ',' -f 3 | sort | uniq | wc -l", shell=True) 

print "got here" 
output.close() 
print "got here22222" 
input.close() 

我剛剛從終端運行它並執行它。然而,它打印出後,最後

了here22222

有一對夫婦秒的延遲,然後打印出567。然而,有一個在我上面的腳本沒有打印567。有誰知道它爲什麼打印這個數字?如何阻止它打印此號碼?預先感謝您提供的任何幫助。

./test.py a b 
got here 
got here22222 
~/test$  567 
+2

我認爲它來自'cat'的子進程調用。你在捕捉(在管道中)一個文件,而且567很可能是這條管道的結果 – inspectorG4dget

回答

1

您的管道的最後一個階段是wc -l這可能是產生數567子進程停止這種。需要幾秒鐘才能達到這一點。

+0

我是個白癡。謝謝。這是wc -l。我也想出瞭如何將輸出分配給一個變量。我需要把一個stdout = subprocess.PIPE;例如新的python cmd應該是proc = subprocess.Popen(「cat」+ input.name +「| cut -d','-f 3 | sort | uniq | wc -l」,shell = True,stdout = subprocess.PIPE ) – Classified

2

情況發生,你可以等待使用proc.wait()否則我猜管道命令的輸出爲567

相關問題