所以说我有以下几行代码:
if __name__ == '__main__':
if '-h' in sys.argv:
show_help()
elif '-f' or 'function'in sys.argv:
print(function1)
elif '-n'or '-name' in sys.argv:
print(function2)
elif '-e' or '-extension'in sys.argv:
print(function3])
elif '-m' or '-missing'in sys.argv:
print(function4)
elif 'r' or '-range' in sys.argv:
print(function5)
else:
exit
应该在bash终端中从用户输入字母。 显示帮助方法有效,并且能够显示所有字符串。 -f输入工作并显示我在该函数中需要的内容,但是代码只是从函数1中而不是从function2中吐出内容,依此类推。
如何获得这些不同的字母-f,-n,-e,-m(如果输入)以执行该功能并输出该信息? 还有没有在初学者Python脚本编写者中使用argparse的更有效方法吗?
答案 0 :(得分:3)
要测试两个值中的任何一个是否在列表中,不能将or
运算符与in
运算符一起使用。您需要使用in
运算符分别测试每个值,如下所示:
if '-h' in sys.argv:
show_help()
elif '-f' in sys.argv or '-function' in sys.argv:
print(function1)
elif '-n' in sys.argv or '-name' in sys.argv:
print(function2)
elif '-e' in sys.argv or '-extension'in sys.argv:
print(function3])
elif '-m' in sys.argv or '-missing'in sys.argv:
print(function4)
elif '-r' in sys.argv or '-range' in sys.argv:
print(function5)
else:
exit
答案 1 :(得分:2)
我强烈建议使用 argparse 。
如果您不愿意,也可以创建标志字典:
flags = {
'-h': show_help,
'-f': function1,
'-function': function1,
'-n': function2,
'-name': function2,
'-e': function3,
'-extension': function3,
'-m': function4,
'-missing': function4,
'-r': function5,
'-range': function5,
}
if __name__ == '__main__':
for flag in sys.argv:
print(flags[flag])
通过创建字典,您可以只查找键。
它可以使代码更干净,更快,更可维护。