2013-07-04 141 views
1

首先,對於不精確的標題感到抱歉(如果有人有更好的建議如何命名這個線程隨時告訴我),我的問題並沒有那麼複雜。在python中定義一個linux命令的命令行參數

我寫在Python中的一個小程序在那裏我執行命令行:

import os 

os.system("sudo rtcwake -m off -s 100") 

你們當中有些人可能知道這僅僅是關閉計算機,然後再次打開它(100之後的rtcwake命令秒)。

我想以某種方式實現此程序(例如,從控制檯執行)用戶可以輸入計算機應該關閉的秒數,而不是預先確定的100秒。

這樣做的正確方法是什麼?

回答

1

format是你的朋友:

import os, sys 
if len(sys.argv) == 2: 
    os.system("sudo rtcwake -m off -s {}".format(sys.argv[1])) 
else: print "usage: ..." 

所以秒鐘都是命令行參數。或者,你可以把它互動:

import os 
secs = raw_input() 
os.system("sudo rtcwake off -s {}".format(secs)) 

,以驗證用戶輸入的是一個整數:

try: secs = int(secs) 
except: print 'usage: ' 
+0

Exactlly什麼,我一直在尋找!謝謝!! – user2013394

+0

關於你的交互變量,如果用戶輸入任何不是數字的東西,那麼這個命令行會遇到麻煩。你會如何檢查這個?我想執行一個「如果類型(秒)是int - > os.system(」sudo .....)否則打印'不正確,再試一次'os.system(「python nameoftheprogram.py」),但因爲我閱讀使python typechecks不推薦...? – user2013394

+0

@ user2013394,即使輸入是有效整數,類型也是'raw_input'後的'str'。在示例中添加了一個可能的檢查。 – perreal

1

使用ArgumentParser

parser = argparse.ArgumentParser(description='Shutdown your computer and turns it on after x seconds.') 
parser.add_argument('delay', metavar='x', type=int, 
        help='The number of seconds the computer should be down.', default=100) 
args = parsre.parse_args() 
x = args.delay