验证 python 中的 sys.argv[] 个参数
validating sys.argv[] arguments in python
我在 python 脚本中使用 sys.argv[] 参数。
val=sys.argv[1]
Print (val)
所以在这里,我的 sys.argv[1] 值将是文本。我需要验证它的文本或其他内容。我用谷歌搜索,发现 argparse 可以帮助我做这种测试。但我无法理解。谁能帮帮我。
使用正则表达式。例如,如果您只想允许字母、数字和空格:
import re
if re.search(r'[^a-z\d\s]', sys.argv[1], re.I):
print("Invalid argument")
sys.exit()
像大多数编程任务一样,有几种方法可以解决这个问题:
- 手动解析
import sys
import os.path
def show_help():
print("Help screen...")
flag_set=False # default to off
outfile="out.txt"
infile="in.txt"
i = 1 # 0 is the filename of the script
while i < len(sys.argv):
arg = sys.argv[i]
i += 1
if arg == "-h" or arg == "--help":
show_help()
sys.exit(0)
elif arg == "-f" or arg == "--flag":
flag_set=True
elif arg == "-o" or arg == "--outfile":
outfile=sys.argv[i] # ignoring len check for brevity
i += 1
elif arg == "-i" or arg == "--infile":
infile=sys.argv[i] # ignoring len check for brevity
# Simple parameter validation
if not os.path.exists(infile):
print("Input file '", infile, "' not found.")
sys.exit(0)
i += 1
# ... for any other args you want
if flag_set:
print("Flag was set")
print("Reading from:", infile)
print("Outputting to:", outfile)
您可以使用诸如此类的简单逻辑进行任何类型的验证。
- Handy-dandy 库(如 argparse)
https://docs.python.org/3/library/argparse.html
没有“错误”的方法,使用适合您的任何方法!但是一定要坚持使用标准标志,比如 -h 寻求帮助等。
我在 python 脚本中使用 sys.argv[] 参数。
val=sys.argv[1]
Print (val)
所以在这里,我的 sys.argv[1] 值将是文本。我需要验证它的文本或其他内容。我用谷歌搜索,发现 argparse 可以帮助我做这种测试。但我无法理解。谁能帮帮我。
使用正则表达式。例如,如果您只想允许字母、数字和空格:
import re
if re.search(r'[^a-z\d\s]', sys.argv[1], re.I):
print("Invalid argument")
sys.exit()
像大多数编程任务一样,有几种方法可以解决这个问题:
- 手动解析
import sys
import os.path
def show_help():
print("Help screen...")
flag_set=False # default to off
outfile="out.txt"
infile="in.txt"
i = 1 # 0 is the filename of the script
while i < len(sys.argv):
arg = sys.argv[i]
i += 1
if arg == "-h" or arg == "--help":
show_help()
sys.exit(0)
elif arg == "-f" or arg == "--flag":
flag_set=True
elif arg == "-o" or arg == "--outfile":
outfile=sys.argv[i] # ignoring len check for brevity
i += 1
elif arg == "-i" or arg == "--infile":
infile=sys.argv[i] # ignoring len check for brevity
# Simple parameter validation
if not os.path.exists(infile):
print("Input file '", infile, "' not found.")
sys.exit(0)
i += 1
# ... for any other args you want
if flag_set:
print("Flag was set")
print("Reading from:", infile)
print("Outputting to:", outfile)
您可以使用诸如此类的简单逻辑进行任何类型的验证。
- Handy-dandy 库(如 argparse)
https://docs.python.org/3/library/argparse.html
没有“错误”的方法,使用适合您的任何方法!但是一定要坚持使用标准标志,比如 -h 寻求帮助等。