我有这个程序应该允许用户输入一个开始/结束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()
答案 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'
;第二个角色在比较中没有任何作用。