如果没有手动给出参数,则继续

Har*_*sti 2 python unix

#!/usr/bin/python
import sys
import datetime
from datetime import timedelta
import time

date = datetime.datetime.today().weekday()
if date ==5 or date ==6:
 print "Its saturday or sunday: exiting"
 exit()

if sys.argv[0]:  #Going Back one Day
 date = datetime.date.today()
 yday = date-timedelta(days=1)
 mm = date.strftime("%b")
 yyyy= str(yday.year)
 dd =  '%02d' % yday.day

#Arguments If Needed
elif sys.argv[1]:
 dd=sys.argv[1][0:2]
 mm=sys.argv[1][2:5]
 yyyy=sys.argv[1][5:9]


date=dd+"-"+mm+"-"+yyyy
print date
Run Code Online (Sandbox Code Playgroud)

如果没有手动给出系统参数,此代码可以正常工作但是当给出较早日期的参数时,它仍会打印上一个日期.

我无法指出出了什么问题请帮忙谢谢!

如果我运行代码,(python a.py)它打印,06-Dec-2015 但如果我给出一个参数,让我们说(python a.py 01-Dec-2015)它仍然打印06-Dec-2015

hlt*_*hlt 5

你的if陈述是错的.您正在检查sys.argv[0](即脚本的名称),它通常会评估为True(因为它包含一个实际的字符串).该elif部件永远不会被触发.

而是检查参数的数量,如下所示:

if len(sys.argv) == 1:
    # No arguments (except for the script name)
    # ...
elif len(sys.argv) == 2:
    # 1 argument
    # ...
Run Code Online (Sandbox Code Playgroud)