我写了一个简单的函数来计算两个给定日期之间的差。
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)运行时,只要运行该函数,即可得到正确的结果。
我在这里想念的是什么?
答案 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