2015-02-09 112 views
2

我是Linux的新手。我有一個非常簡單的Python腳本,它接受命令行參數並打印它們。現在我只想將date命令的輸出作爲輸入傳遞給此Python腳本並打印出來。 Python腳本看起來像這樣。Linux如何通過日期命令的輸出作爲python程序的輸入作爲命令行參數

import sys 
print "command line arguments recieved are" 
for i in range(0,len(sys.argv)) : 
    print sys.argv[i] 

雖然爲了使date命令的輸出傳遞給劇本我只是做了

date | python exmp.py 

這是一個命令的輸出傳遞作爲程序的輸入正確的方式運行此程序? 我的程序沒有從日期命令中獲取輸入。我得到的輸出是這樣的

command line arguments recieved are 
exmp.py 

我真的無法找出我在做什麼錯誤的事情。請幫我解決這個問題。

+0

從標準輸入讀取。你可能應該更多地瞭解管道。 – 2015-02-09 10:57:45

+0

或來自python'import time;打印(time.strftime(「%d /%m /%Y」))' – 2015-02-09 11:42:20

回答

1

如果您想將date的輸出傳遞給python,您可以將其輸出(使用|),或者您可以將它作爲命令行參數傳遞。

考慮下面的Python程序:

可以調用與在命令行上此程序:

echo "hmm, this is text" | python test3.py "`date`" 

當我運行程序我得到:

Command line input: 
['test3.py', 'Mon 9 Feb 21:10:00 AEST 2015'] 

Standard input: 
hmm, this is text 

左邊的日期左側引號指定應該運行date,並且您不只是指文字date。日期周圍的雙引號強制日期的輸出是傳遞給python的單個命令行參數。嘗試刪除外部引號,內部引號和兩者。

首先執行|符號左側的命令,然後將結果作爲標準輸入傳遞給右側的程序。取而代之的echo你可以使用:

date | python test3.py 

如果你只是想獲得日起蟒蛇,看看一些內置的Python模塊的。

0

您正在混合Unix shell的兩個不同的工具。

你所要求可以像

python exmp.py $(date) 

,或者你可以改變你的腳本來完成讀取標準輸入:

date | python -c 'import sys 
for line in sys.stdin: print line' 

表達$(date)執行command substitution:括號中的命令運行,並且其輸出被替換爲括號表達式。

有一個混合兩個叫xargs工具:

date | xargs python exmp.py 
相關問題