【问题标题】:Using sys.argv to implement command line arguments?使用 sys.argv 实现命令行参数?
【发布时间】:2014-10-27 20:03:55
【问题描述】:

我对在程序中正确实现命令行参数感到相当困惑。我环顾四周,很困惑是否需要 for 循环。我确信总是只有两个参数传递给这个程序。最终,在这种情况下是否需要 for 循环?这是main函数中的代码:

def main():
try:
    if len(sys.argv) > 1:
        filename = sys.argv[1]
        length = int(sys.argv[2])
    wordDict = readFile(filename)
except IOError:
    print("Error: file not found.")

感谢大家的意见!

【问题讨论】:

    标签: python command argv


    【解决方案1】:

    如果您确切知道需要多少个参数,则无需使用循环。

    我注意到在您检查 sys.argv 的数量是否大于 1 的代码中,您需要检查它是否大于 2,因为第一个 sys.argv (sys.argv[0]) 是命名你正在运行的脚本https://docs.python.org/3/library/sys.html?highlight=sys.argv#sys.argv

    如果只有一个参数被传递给你的程序,它当前会导致 IndexError。

    【讨论】:

    • 另外,如果len(sys.argv) 小于 2,则会引发 NameError。
    【解决方案2】:

    你可以试试 argparse: https://docs.python.org/2/library/argparse.html

    import argparse
    
    
    parser = argparse.ArgumentParser(description='What ever the purpose of the script is')
    
    parser.add_argument('filename', type=str,
                       help='path to the file')
    
    parser.add_argument('length', type=int,
                       help='some length')
    
    args = parser.parse_args()
    print args.filename
    print args.length
    

    【讨论】:

      猜你喜欢
      • 2014-12-08
      • 1970-01-01
      • 2011-06-13
      • 1970-01-01
      • 2015-09-27
      • 1970-01-01
      • 2017-09-07
      • 2020-09-10
      • 2012-09-05
      相关资源
      最近更新 更多