python - 在使用 Python 的 argparse 库时,可能会在赋值错误之前引用局部变量。需要帮助调试
问题描述
我目前收到一条错误消息,指出:“局部变量可能在分配之前被引用”三个变量,deviceIP、deviceUsername 和 devicePassword。这些参数是使用 arparse 库添加的,我不太熟悉为什么会收到这些错误的事实。
我假设这些变量值是使用命令行输入的,并且我尝试在命令行中输入它们但没有成功,因为我的程序没有编译。这是代码:
#usage: ....py [-h]
# [-deviceIP DEVICEIP]
# [-deviceUsername DEVICEUSERNAME]
# [-devicePassword DEVICEPASSWORD]
def Main():
# Initialize dynamic time stamp and script name
beginstamp = datetime.datetime.utcnow().replace(microsecond=0)
beginDisplayedstamp = getStamp()
scriptName = os.path.basename(__file__)
print (" scriptName = ", scriptName)
scriptPurpose = 'Script to reboot swtich.\n'
parser = argparse.ArgumentParser(description=scriptPurpose, formatter_class=RawTextHelpFormatter)
parser.add_argument("-deviceIP", help="Target device IP address", type=str)
parser.add_argument("-deviceUsername", help="Target device username", type=str)
parser.add_argument("-devicePassword", help="Target device password", type=str)
args = parser.parse_args()
#Section to handle the input parameters
if args.deviceIP is None:
line = "Fail, The deviceIP parameter is blank.\n"
print (line)
else:
deviceIP = args.deviceIP
if args.deviceUsername is None:
line = "Fail, The deviceUsername parameter is blank.\n"
print (line)
else:
deviceUsername = args.deviceUsername
if args.devicePassword is None:
line = "Fail, The devicePassword parameter is blank.\n"
print (line)
else:
devicePassword = args.devicePassword
print ("**********************")
print (deviceIP, deviceUsername, devicePassword)
print ("Checking the connectivity of the device\n"
ret = ping(deviceIP)
ret = 1
#print ret
if ret:
print ("DeviceIP is pingabale continue")
else:
print ("Device IP not accessible, Give valid IP")
sys.exit(-1)
这是我运行程序时的错误代码,但也许我得到了这个,因为我不确定如何正确输入这些参数?
C:/......
scriptName = Cisco_switch.py
Traceback (most recent call last):
Fail, The deviceIP parameter is blank.
File "C:/.....", line 280, in <module>
Fail, The deviceUsername parameter is blank.
Main()
File "C:/......", line 225, in Main
Fail, The devicePassword parameter is blank.
print(deviceIP, deviceUsername, devicePassword)
UnboundLocalError: local variable 'deviceIP' referenced before assignment
**********************
Process finished with exit code 1
感谢您的帮助,谢谢!
解决方案
推荐阅读
- scala - 在带有 Source.queue 和 Sink.queue 的 akka 流媒体程序中,我提供了 1000 个项目,但是当我尝试将它们取出时它只是挂起
- c# - Unity 中的 Facebook 横幅广告问题
- python-2.7 - 如何为 python 2.7 安装 wily 工具?
- java - 类中的构造函数不能应用于给定类型;发现:java.lang.String,char 原因:实际参数列表和形式参数列表的长度不同
- unity3d - 在 Unity 中使用任何“LightMode”标签时,着色器变为洋红色或不可见
- c# - 在MVC c#中准备自定义json格式返回
- pandas - 从多列级别选择数据
- python - Word2Vec 词汇相似之处
- python - NLTK 话语树到边缘列表
- java - 使用格式化字段进行数学运算