Python Args无法正常工作

时间:2015-05-29 21:09:35

标签: python command-line-arguments

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

#/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()

1 个答案:

答案 0 :(得分: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';第二个角色在比较中没有任何作用。