我在将sys.argv
存储到代码中的变量时遇到了麻烦。
听起来很简单,但如何检查多个sys.argv
是否在我的代码中放入变量?
以及在sys.argv
上使用正则表达式。
答案 0 :(得分:1)
sys.argv
只是一个列表,就像任何其他Python列表一样。因此,您可以执行len(sys.argv)
之类的操作来获取列表中的项目数,并sys.argv[4]
来获取列表中的第五项(当然,确保您不会尝试访问列表末尾之外的项目。)
举例来说,这个小脚本输出其参数(包括第一个,脚本本身):
import sys
for i in range(len(sys.argv)):
print('Argument #%d is "%s"' % (i, sys.argv[i]))
使用python3 testprog.py a b c d e
运行该命令:
Argument #0 is "testprog.py"
Argument #1 is "a"
Argument #2 is "b"
Argument #3 is "c"
Argument #4 is "d"
Argument #5 is "e"
就如何在参数上使用正则表达式而言,你只需要意识到它是字符串的列表。所以你可以做的任何东西都是字符串是公平的游戏。
因此,作为另一个例子,当给出两个参数时,这个脚本将检查第二个参数中的字符串是否与第一个中的正则表达式匹配:
import sys
import re
if len(sys.argv) != 3:
print("Usage: testprog <regex> <string>")
elif re.fullmatch(sys.argv[1], sys.argv[2]) is None:
print("No match")
else:
print("Match")
示例运行:
pax> python3 testprog.py
Usage: testprog <regex> <string>
pax> python3 testprog.py '[a-z]{4}' 'hello'
No match
pax> python3 testprog.py '[a-z]{4}' 'hell'
Match