Python:命令行参数未正确输入日期

时间:2020-02-21 06:12:11

标签: python

我写了一个简单的函数来计算两个给定日期之间的差。

def dat_diff(d1,d2):
  d_1 = datetime.strptime(d1,'%Y-%m-%d')
  d_2 = datetime.strptime(d2,'%Y-%m-%d')
  if d_1 > d_2:
    diff = d_1 - d_2
  else:
    diff = d_2 - d_1
  return diff.days

现在,我想从Windows CMD提示符下运行它。为此,我添加了以下两行

if __name__=='__main__':
  d1 = sys.argv[0]
  d2 = sys.argv[1]
  dat_diff(d1,d2)

从cmd提示符运行时,出现如下错误:

ValueError: time data 'C:\\path_to_py_file\\test_cmp_arg.py' does not match format '%Y-%m-%d'

但是,当从IDE(在我的情况下为Spyder)运行时,只要运行该函数,即可得到正确的结果。

我在这里想念的是什么?

1 个答案:

答案 0 :(得分:1)

sys.argv [0]是程序名称

请参见下面的工作代码:

from datetime import datetime
import sys

def dat_diff(d1,d2):
    d_1 = datetime.strptime(d1,'%Y-%m-%d')
    d_2 = datetime.strptime(d2,'%Y-%m-%d')
    if d_1 > d_2:
        diff = d_1 - d_2
    else:
        diff = d_2 - d_1
    return diff.days

if     __name__=='__main__':
  print(sys.argv)
  d1 = sys.argv[1]
  d2 = sys.argv[2]
  print("Diff is {} days".format(dat_diff(d1,d2)))

并在运行它:

# python d.py  2020-12-31 2020-01-01
['d.py', '2020-12-31', '2020-01-01']
Diff is 365 days
相关问题