命令行输入大小写敏感

时间:2018-03-21 13:30:55

标签: python input case

我正在使用命令行输入在我的.py脚本中执行一些简单的任务。

我的输入是.py(GPIO)(SERIAL)(日志)(调试)(可以包含整数)(引脚)(可以包含整数)(详细)(帮助)

当然它是所有用户输入所以它区分大小写。

我正在使用:

if "gpio" in [x.lower() for x in sys.argv]:

工作正常,

if str(['Debug','10'])[1:-1] in str([sys.argv]):
if str(['Pin','10'])[1:-1] in str([sys.argv]):

适用于区分大小写和精确整数值,但对于区分大小写和不同的整数值都不正常。 所以我需要让它接受任何情况str.lower()和任何整数值int() 但我尝试的一切都失败了。 str.lower不接受列表,我不知道如何处理整数。

如果可能,我想在不导入模块的情况下这样做。

3 个答案:

答案 0 :(得分:0)

是的,正如BlackJack所说,正确的方法是使用argparse。你可以自己动手,但是存在argparse的原因 - 解析变得复杂并且工作已经完成。尽管如此,这是一个简单的参数解析器,可以做你想要的,假设我理解你的问题:

import sys

cmd = None
commands = {}
for arg in sys.argv[1:]:
    # set the cmd for all the args that have a value
    if arg.lower() == 'debug' or arg.lower() == 'pin':
        cmd = arg
    # next check for boolean args
    elif arg.lower() == 'gpio':
        commands[arg.lower()] = True
    # take everything else to be a value associated with cmd
    else:
        commands[cmd] = int(arg)
        cmd = None
print(commands)

答案 1 :(得分:0)

我最后用Brad Dre的帮助“arg.lower()得到了:

  if len(sys.argv) > 1:
    for i in range(1,len(sys.argv)):
      if str.isdigit(sys.argv[i]):
        arg = sys.argv[i-1]
        newval[arg.lower()] = int(sys.argv[i])

创建“词典”,然后调用:

 if "debug" in newval:
 if "pin" in newval:

为我工作。

答案 2 :(得分:0)

<meta itemprop="worstRating" content="0" /> <span itemprop="ratingValue">0</span>/<span itemprop="bestRating">5</span> 的示例。它不是不区分大小写的,但我认为不允许argparse--gpio--Gpio,...

--gPiO

免费获得from argparse import ArgumentParser def main(): parser = ArgumentParser() parser.add_argument( '--gpio', action='store_true', default=False, help='Use GPIO.' ) parser.add_argument( '--serial', action='store_true', default=False, help='Make a serial connection.' ) parser.add_argument( '--log', action='store_true', default=False, help='Log actions.' ) parser.add_argument( '--debug', metavar='LEVEL', type=int, default=0, help='Debug level.' ) parser.add_argument('--pin', type=int, help='Pin number.') parser.add_argument( '--verbose', action='count', default=0, help='Increase level of verbosity.' ) options = parser.parse_args() if options.gpio: pass if options.debug > 0: pass if options.pin is not None: pass if __name__ == '__main__': main()

--help