【问题标题】:Getting Command line in Python在 Python 中获取命令行
【发布时间】:2013-06-13 21:23:20
【问题描述】:

所以我正在做这个项目,我从用户那里获取输入(文件名),然后打开并检查内容。文件名为“cur” 现在假设我的文件名是kb.py(它在python中) 如果我在终端上运行它,那么首先我会这样做: python kb.y 然后会有一个提示,用户会给出输入。 我会这样做:

A = raw_input("Enter File Name: ")
b = open(A, 'r+')

我不想那样做。相反,我想将其用作命令,例如: python kb.py cur 它会将其作为输入并保存到一个变量中,然后该变量将打开它。 我很困惑如何在同一命令行中获取输入。

【问题讨论】:

    标签: python bash command-line


    【解决方案1】:

    对于简单的东西sys.argv[] 是要走的路,对于更复杂的东西,看看argparse-module

    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("--verbose", help="increase output verbosity",
                        action="store_true")
    args = parser.parse_args()
    if args.verbose:
       print "verbosity turned on"
    

    输出:

    $ python prog.py --verbose
    verbosity turned on
    $ python prog.py --verbose 1
    usage: prog.py [-h] [--verbose]
    prog.py: error: unrecognized arguments: 1
    $ python prog.py --help
    usage: prog.py [-h] [--verbose]
    
    optional arguments:
      -h, --help  show this help message and exit
      --verbose   increase output verbosity
    

    【讨论】:

      【解决方案2】:

      只需使用sys.argv,像这样:

      import sys
      
      # this part executes when the script is run from the command line
      if __name__ == '__main__':
          if len(sys.argv) != 2: # check for the correct number of arguments
              print 'usage: python kb.py cur'
          else:
              call_your_code(sys.argv[1]) # first command line argument
      

      注意:sys.argv[0] 是脚本的名称,sys.argv[1] 是第一个命令行参数。等等,如果有更多的论点。

      【讨论】:

      • 感谢您的帮助,但请您解释一下如果 name == 'main': 和 call_your_code(sys.argv[1]) 会怎样在做什么?
      • @Nick 第一个问题:看看this answer。第二个问题:这是您的程序开始的部分,您将使用cur 参数的部分。在这里做什么由您决定!
      • 好的,这有帮助。还有一个问题,假设我输入 python kb.py cur 现在我必须打开 cur 文件以查看其中的内容,然后如何将其分配给变量。我的意思是它在上面提到的代码中究竟是在哪里分配的,是否有任何特定的变量可以调用 open(VAR, 'r+')
      • A = raw_input("输入文件名:") B =open(call_your_code, 'r+') 我在python中做这样的事情
      • 不,argv[1] 的值只是您从命令行输入的文本。如果您像这样执行程序:python kb.py cur,那么在argv[1] 中,您将拥有字符串'cur'。从现在开始由您决定如何处理,例如,打开一个名为 'cur' 的文件等。命令行参数只是文本。
      猜你喜欢
      • 2011-10-25
      • 2011-11-15
      • 2016-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-11
      • 1970-01-01
      相关资源
      最近更新 更多