[英]Can't break out of Python loop
我遇到了在Python中脱离循环的问题。 只是不会爆发。
这是dl.py:
#! /usr/bin/python
import urllib
import urllib2
import os
import sys
import re
from pyquery import PyQuery as pq
url = sys.argv[1]
limit = sys.argv[2]
count = 0
while True :
if count >= limit :
break
print 1;
count += 1
print 'Complete ... exiting';
它永远循环,我不明白为什么。 Python不是我的母语,我使用它来编写一些Shell脚本。
我这样运行./dl.py http://url.com 3
我究竟做错了什么?
您需要使用int(limit)
将limit
转换为整数。 在Python 2.x 3 > '2'
将始终返回False
因此循环永远不会完成。
您需要使用int(limit)
将limit
转换为整数(否则从命令行读取时,Python会将它视为字符串)。 整数被评估为小于字符串(至少在Python 2中)。
>>> int < str
True
问题在于sys.argv[2]
将返回一个字符串,并且当您在Python中将字符串与整数进行比较时,该字符串总是更大。 尝试使用if count >= int(limit):
代替。
您可以在有很多arg的情况下仅调用一次sys.argv
,并使用int
作为限制,因为sys.argv
从输入中获取字符串:
user_args = sys.argv[1:]
url, limit = user_args
limit=int(limit)
尝试重新格式化您的while循环,以包含要从中断开的语句。 另外,您需要将str limit
转换为int
。 尽管while True
循环可以工作,但使用True
语句而不是限定条件来打破循环不是while
循环的最佳实践。
while count <= int(limit):
print 1;
count += 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.