首页 文章

用户输入和命令行参数

提问于
浏览
425

我如何拥有a)可以接受用户输入的Python脚本以及如何使用b)从命令行运行参数?

11 回答

  • 6

    要读取用户输入,您可以尝试使用the cmd module轻松创建一个迷你命令行解释器(带有帮助文本和自动完成)和raw_input(用于Python 3的input),以便从用户那里读取一行文本 .

    text = raw_input("prompt")  # Python 2
    text = input("prompt")  # Python 3
    

    命令行输入位于 sys.argv 中 . 在您的脚本中尝试此操作:

    import sys
    print (sys.argv)
    

    解析命令行选项有两个模块:optparse(自Python 2.7起不推荐使用,而使用argparse)和getopt . 如果您只想将文件输入脚本,请注意fileinput的强大功能 .

    Python library reference是你的朋友 .

  • 9
    var = raw_input("Please enter something: ")
    print "you entered", var
    

    或者对于Python 3:

    var = input("Please enter something: ")
    print("You entered " + str(var))
    
  • 371

    Python 3.x中不再提供 raw_input . 但是 raw_input 被重命名为 input ,因此存在相同的功能 .

    input_var = input("Enter something: ")
    print ("you entered " + input_var)
    

    Documentation of the change

  • 2

    处理命令行参数的最佳方法是argparse module.

    使用 raw_input() 获取用户输入 . 如果您导入readline module,您的用户将拥有行编辑和历史记录 .

  • 30

    小心不要使用 input 功能,除非你知道你在做什么 . 与 raw_input 不同, input 将接受任何python表达式,所以它有点像 eval

  • 199

    这个简单的程序可以帮助您了解如何从命令行提供用户输入,并显示有关传递无效参数的帮助 .

    import argparse
    import sys
    
    try:
         parser = argparse.ArgumentParser()
         parser.add_argument("square", help="display a square of a given number",
                    type=int)
        args = parser.parse_args()
    
        #print the square of user input from cmd line.
        print args.square**2
    
        #print all the sys argument passed from cmd line including the program name.
        print sys.argv
    
        #print the second argument passed from cmd line; Note it starts from ZERO
        print sys.argv[1]
    except:
        e = sys.exc_info()[0]
        print e
    

    1)找到5的平方根

    C:\Users\Desktop>python -i emp.py 5
    25
    ['emp.py', '5']
    5
    

    2)传递除数字以外的无效参数

    C:\Users\bgh37516\Desktop>python -i emp.py five
    usage: emp.py [-h] square
    emp.py: error: argument square: invalid int value: 'five'
    <type 'exceptions.SystemExit'>
    
  • 12

    使用'raw_input'从控制台/终端输入 .

    如果您只是想要一个命令行参数,例如文件名或者某些内容,例如

    $ python my_prog.py file_name.txt
    

    然后你可以使用sys.argv ...

    import sys
    print sys.argv
    

    sys.argv是一个列表,其中0是程序名,因此在上面的例子中sys.argv [1]将是“file_name.txt”

    如果要使用完整的命令行选项,请使用optparse模块 .

    PEV

  • 5

    如果您运行的是Python <2.7,则需要optparse,正如文档所解释的那样,它将为运行应用程序时调用的命令行参数创建一个接口 .

    但是,在Python≥2.7中,不推荐使用optparse,并将其替换为argparse,如上所示 . 来自文档的快速示例......

    以下代码是一个Python程序,它获取整数列表并生成总和或最大值:

    import argparse
    
    parser = argparse.ArgumentParser(description='Process some integers.')
    parser.add_argument('integers', metavar='N', type=int, nargs='+',
                       help='an integer for the accumulator')
    parser.add_argument('--sum', dest='accumulate', action='store_const',
                       const=sum, default=max,
                       help='sum the integers (default: find the max)')
    
    args = parser.parse_args()
    print args.accumulate(args.integers)
    
  • 10

    从Python 3.2 2.7开始,现在有argparse用于处理命令行参数 .

  • 424

    如果它是3.x版本,那么只需使用:

    variantname = input()
    

    例如,您要输入8:

    x = input()
    8
    

    x将等于8但它将是一个字符串,除非你另外定义它 .

    所以你可以使用convert命令,如:

    a = int(x) * 1.1343
    print(round(a, 2)) # '9.07'
    9.07
    
  • 17

    在Python 2中:

    data = raw_input('Enter something: ')
    print data
    

    在Python 3中:

    data = input('Enter something: ')
    print(data)
    

相关问题