验证 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()

像大多数编程任务一样,有几种方法可以解决这个问题:

  1. 手动解析
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)

您可以使用诸如此类的简单逻辑进行任何类型的验证。

  1. Handy-dandy 库(如 argparse)

https://docs.python.org/3/library/argparse.html

没有“错误”的方法,使用适合您的任何方法!但是一定要坚持使用标准标志,比如 -h 寻求帮助等。