【问题标题】:Python Args not working correctlyPython Args 无法正常工作
【发布时间】:2015-05-30 05:12:58
【问题描述】:

我有这个程序,它应该允许用户输入开始/结束 arg 以及文件 arg,然后程序将打开一个 txt 文件并读取从 args 开始和结束的 line line s。但是如果我输入 2 作为开始,输入 10 作为结束,它给我的 end 必须大于 start 错误。我该如何解决这个问题?

#/usr/bin/python

# File name: print_lines.py

import sys
print sys.argv[1]
print sys.argv[2]
if len(sys.argv) != 4:
    print "Input: print.py starting ending\n"
    exit ()
if sys.argv[1] >= sys.argv[2]:
    print "Ending line must be larger than the starting line.\n"
    sys.exit()

start = int(sys.argv[1])
end = int(sys.argv[2])
textinput = str(sys.argv[3])
current = 1
try:
    with open(textinput, 'r') as text:
        for line in text:
            if current >= start and current <=end:
                print line
            current += 1
            if current > end:
                break
        else:
            print "End reached, line finishes at", current-1
except IOError:
    print "File not found. \n"
    sys.exit()

【问题讨论】:

    标签: python command-line-arguments


    【解决方案1】:

    sys.argv 条目始终是字符串。如果您想以数字方式处理某些值,您需要将它们转换为int比较它们之前:

    start = int(sys.argv[1])
    end = int(sys.argv[2])
    if start >= end:
        print "Ending line must be larger than the starting line.\n"
        sys.exit()
    

    比较字符串是按按字典顺序进行的;因为字符'1'在字符'9'之前,'10'小于'9';第二个角色在比较中没有任何作用。

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 2012-04-10
      • 2018-10-10
      • 1970-01-01
      • 2016-12-01
      • 2017-11-07
      • 2020-03-18
      • 2012-09-22
      • 2019-02-15
      相关资源
      最近更新 更多