Python 参数无法正常工作
Python Args not working correctly
我有这个程序应该允许用户输入一个 start/end arg 以及一个文件 arg 然后程序将打开一个 txt 文件并读取行 line s 开始和结束于参数。但是,如果我输入 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()
sys.argv
条目始终是字符串。如果你想用数字来处理一些值,你需要将它们转换为 int
before 比较它们:
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'
在字符[=14=之前],所以'10'
小于'9'
;第二个字符在比较中没有任何作用。
我有这个程序应该允许用户输入一个 start/end arg 以及一个文件 arg 然后程序将打开一个 txt 文件并读取行 line s 开始和结束于参数。但是,如果我输入 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()
sys.argv
条目始终是字符串。如果你想用数字来处理一些值,你需要将它们转换为 int
before 比较它们:
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'
在字符[=14=之前],所以'10'
小于'9'
;第二个字符在比较中没有任何作用。