在 Python 中处理命令行参数
Handling command-line arguments in Python
我正在尝试从命令行获取参数来初始化以下class
import sys
class Test(object):
def __init__(self):
for item in sys.argv:
if item.startswith("-Username"):
self.Username = item.split("Username=", 1)[1]
if item.startswith("-SessionID"):
self.sessionID = item.split("SessionID=", 1)[1]
if item.startswith("-appName"):
self.appName = item.split("appName=", 1)[1]
def run(self):
msg = '''Username {0} with SessionID {1} is using the {2} app.'''.format(self.Username, self.SessionID, self.appName)
print msg
if __name__ == '__main__':
Test().run()
在我执行的命令行中:
python test.py -Username=AAA, -SessionID=223, -appName=ABC
出现以下错误:
AttributeError: 'Test' object has no attribute 'Username'.
我想知道这是为什么?感谢任何帮助。
这是变量命名不一致的问题。如果大写问题得到解决,代码将按预期工作:
import sys
class Test(object):
def __init__(self):
for item in sys.argv:
if item.startswith("-Username"):
self.Username = item.split("Username=", 1)[1]
if item.startswith("-SessionID"):
self.sessionID = item.split("SessionID=", 1)[1]
if item.startswith("-appName"):
self.appName = item.split("appName=", 1)[1]
def run(self):
msg = '''Username {0} with SessionID {1} is using the {2} app.'''.format(self.Username, self.sessionID, self.appName)
print msg
if __name__ == '__main__':
Test().run()
请注意 Username
、sessionID
和 appName
的大小写在您的 __init__()
和 run()
方法中必须相同。
我正在尝试从命令行获取参数来初始化以下class
import sys
class Test(object):
def __init__(self):
for item in sys.argv:
if item.startswith("-Username"):
self.Username = item.split("Username=", 1)[1]
if item.startswith("-SessionID"):
self.sessionID = item.split("SessionID=", 1)[1]
if item.startswith("-appName"):
self.appName = item.split("appName=", 1)[1]
def run(self):
msg = '''Username {0} with SessionID {1} is using the {2} app.'''.format(self.Username, self.SessionID, self.appName)
print msg
if __name__ == '__main__':
Test().run()
在我执行的命令行中:
python test.py -Username=AAA, -SessionID=223, -appName=ABC
出现以下错误:
AttributeError: 'Test' object has no attribute 'Username'.
我想知道这是为什么?感谢任何帮助。
这是变量命名不一致的问题。如果大写问题得到解决,代码将按预期工作:
import sys
class Test(object):
def __init__(self):
for item in sys.argv:
if item.startswith("-Username"):
self.Username = item.split("Username=", 1)[1]
if item.startswith("-SessionID"):
self.sessionID = item.split("SessionID=", 1)[1]
if item.startswith("-appName"):
self.appName = item.split("appName=", 1)[1]
def run(self):
msg = '''Username {0} with SessionID {1} is using the {2} app.'''.format(self.Username, self.sessionID, self.appName)
print msg
if __name__ == '__main__':
Test().run()
请注意 Username
、sessionID
和 appName
的大小写在您的 __init__()
和 run()
方法中必须相同。