python - 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
是否正确地将参数传递给类对象。我看过这里,但找不到任何解决我的问题的方法。
解决方案
该行parser.parse_args()
并没有真正做任何事情(好吧,它做了一些事情,但没有效果)。您想要实际保存这些解析的参数,例如:
args = parser.parse_args()
然后从命令行传递实际参数而不是文字字符串:
ob = TimeTesting(args.Hrs, args.Mins)
另请注意,这些参数已用 定义type=int
,因此int()
无需在类内进行转换。
推荐阅读
- string - 将 char 变量的值获取到 C++ 中的 ref 类字符串中(Visual Studio)
- apache-kafka - 如何有条件地暂停 Kafka-connect 连接器
- php - 使用带有 Netbeans 崩溃的 XDebug 调试 PHP 项目
- java - thymeleaf 电子邮件模板背景图像未显示
- java - 域中的端口拒绝 cookie
- python - 如何将 2 个 .txt 文件与 python 脚本进行比较?
- angularjs - MatExapansionPanel 的角度材料限制切换为仅单击箭头
- android - 使用 setUseNativeTextInput(false) 时 Android 上 TextField 中的文本乱码;
- html - 如何进行 2 个链式转换,第一个带有转换,接下来没有转换?
- python - 如何通过使用python将现有值移动到下一个索引来在特定索引中的现有列表中插入值