如何在 Python 中传递包含正则表达式的参数?
How to pass argument that contains regular expression in Python?
我正在使用 python 的 argparse 模块从命令行获取参数并登录网站,例如:python app.py username password
。但是,我意识到一些更复杂的密码可能包含正则表达式,例如“#”或“$”,args.password 最终将被 MacOS 终端忽略或修改:python app.py username #pa$$word
.
parser = argparse.ArgumentParser()
parser.add_argument("username", help="website account username", type=str)
parser.add_argument("password", help="website account password", type=str)
args = parser.parse_args()
如何避免这种行为而不必对这些 str 参数进行硬编码?
你说的不是正则表达式。
此外,问题不在于 python,而是您的 shell。
你必须用
调用你的脚本
python app.py username '#pa$$word'
和sys.argv[2]
将包含密码。
如果您的密码包含单引号 ('
),则必须将其替换为三重单引号 '\''
,其中第二个 '
的前缀为\
正如其他人所说:
将密码作为命令行参数传递给脚本被认为是不好的做法,因为任何能够在同一台计算机上键入 ps
的人都会看到密码。
更常见的选项是,您
- 传递包含密码的文件的名称,并且该文件对组和其他人没有读取权限
- 传递包含密码的环境变量的名称或
- 通过标准输入将密码输入脚本。
- 提示输入密码。 (通常你尝试重新配置终端,这样密码就不会显示在终端上)
我正在使用 python 的 argparse 模块从命令行获取参数并登录网站,例如:python app.py username password
。但是,我意识到一些更复杂的密码可能包含正则表达式,例如“#”或“$”,args.password 最终将被 MacOS 终端忽略或修改:python app.py username #pa$$word
.
parser = argparse.ArgumentParser()
parser.add_argument("username", help="website account username", type=str)
parser.add_argument("password", help="website account password", type=str)
args = parser.parse_args()
如何避免这种行为而不必对这些 str 参数进行硬编码?
你说的不是正则表达式。
此外,问题不在于 python,而是您的 shell。
你必须用
调用你的脚本python app.py username '#pa$$word'
和sys.argv[2]
将包含密码。
如果您的密码包含单引号 ('
),则必须将其替换为三重单引号 '\''
,其中第二个 '
的前缀为\
正如其他人所说:
将密码作为命令行参数传递给脚本被认为是不好的做法,因为任何能够在同一台计算机上键入 ps
的人都会看到密码。
更常见的选项是,您
- 传递包含密码的文件的名称,并且该文件对组和其他人没有读取权限
- 传递包含密码的环境变量的名称或
- 通过标准输入将密码输入脚本。
- 提示输入密码。 (通常你尝试重新配置终端,这样密码就不会显示在终端上)