tst.py
import sys
print sys.argv # ['D:/python projects/Prototype/tst.py']
在pycharm中運(yùn)行 sys.argv的打印結(jié)果是一個(gè)列表
如果此時(shí)再運(yùn)行打印
print sys.argv[1]
一定會(huì)報(bào)錯(cuò):
Traceback (most recent call last):
File "D:/python projects/Prototype/tst.py", line 52, in <module>
print sys.argv[1]
IndexError: list index out of range
還是這段代碼:
import sys
print sys.argv
print sys.argv[1]
如果在terminal中或cmd中運(yùn)行畔咧,則打印結(jié)果為:
['tst.py', "'argv'"]
'argv'
sys.argv[ ]其實(shí)就是一個(gè)列表违诗,里邊的項(xiàng)為用戶輸入的參數(shù)某抓,關(guān)鍵就是要明白這參數(shù)是從程序外部輸入的纸兔,而非代碼本身的什么地方,要想看到它的效果就應(yīng)該將程序保存了搪缨,從外部來(lái)運(yùn)行程序并給出參數(shù)食拜。
應(yīng)用:
比如要按照時(shí)間跑腳本:如果運(yùn)行文件則跑全量腳本鸵熟,傳入?yún)?shù)則指定日期
import sys
import datetime
def get_b_or_a_day(days):
today = datetime.date.today()
the_day = datetime.timedelta(days=days)
print the_day
day_ok = today + the_day
return day_ok
if len(sys.argv) == 1:# 沒(méi)傳參數(shù)副编,則默認(rèn)昨天全量
yesterday = str(get_b_or_a_day(-1))
elif len(sys.argv) == 2:
yesterday = sys.argv[1]