首页 > 解决方案 > Python 错误 - 基数为 10 的 int() 的文字无效:''

问题描述

我是 Python 的新手,无法理解这一点。我有一个 python 脚本,它接受来自用户的 2 个参数。下面是代码 -

import datetime
from datetime import timedelta
import time
import csv
import collections
import argparse

MyVar1 = range(1,11)

parser = argparse.ArgumentParser()
parser.add_argument('Hrs', help='Enter the hours', type=int)
parser.add_argument('Mins', help='Enter the minutes', type=int)
parser.parse_args()

class TimeTesting:
    def __init__(self, Hours, Minutes):
        self.Hours = Hours
        self.Minutes = Minutes

    def TimeTest1(self):
        self.T1 = datetime.datetime.now()
        time.sleep(1)
        StopTime = self.T1 + timedelta(hours=int(self.Hours)) + timedelta(minutes=int(self.Minutes))
        print('{}'.format(StopTime.strftime('%Y/%m/%d %H:%M:%S')))

    def TimeTest2(self):
        self.T2 = datetime.datetime.now()
        self.TimeDiff = self.T2 - self.T1
        print('Timetest2 function called')


ob = TimeTesting('Hrs', 'Mins')

for item in MyVar1:
    ob.TimeTest1()
    ob.TimeTest2()

这就是我从命令行调用函数的方式。

cmd> MyScript.py 1 30

下面是我得到的错误。

回溯(最后一次调用):文件“C:\Users\MyScript.py”,第 37 行,在 ob.TimeTest1() 文件“C:\Users\MyScript.py”,第 25 行,在 TimeTest1 StopTime = self. T1 + timedelta(hours=int(self.Hours)) + timedelta(minutes=int(self.Minutes)) ValueError: int() 以 10 为底的无效文字:'Hrs'

我不确定我ob是否正确地将参数传递给类对象。我看过这里,但找不到任何解决我的问题的方法。

标签: pythonpython-3.x

解决方案


该行parser.parse_args()并没有真正做任何事情(好吧,它做了一些事情,但没有效果)。您想要实际保存这些解析的参数,例如:

args = parser.parse_args()

然后从命令行传递实际参数而不是文字字符串:

ob = TimeTesting(args.Hrs, args.Mins)

另请注意,这些参数已用 定义type=int,因此int()无需在类内进行转换。


推荐阅读