Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么代码在预期完成之前停止_Python_Python 2.7_Urllib2 - Fatal编程技术网

Python 为什么代码在预期完成之前停止

Python 为什么代码在预期完成之前停止,python,python-2.7,urllib2,Python,Python 2.7,Urllib2,我正在使用以下函数获取一个刮片作业,该作业从上午9点开始,预计在下午4点停止。但它在这之前就停止了,与我期望的相反。 假设刮片作业在t=1运行,并在t=t完成。如果T

我正在使用以下函数获取一个刮片作业,该作业从上午9点开始,预计在下午4点停止。但它在这之前就停止了,与我期望的相反。 假设刮片作业在
t=1运行,并在
t=t
完成。如果
T<1秒
,则它会休眠
(1-T)秒
。睡眠后,它会重复擦伤循环。循环从上午9点开始,预计在下午4点停止

使用
nosleep=False
时,它不会立即终止,而是运行一段时间,最终不会将任何新数据写入
csv
,尽管函数不会退出

如果通过设置
nosleep=True
移除睡眠时间
(1-T)秒
,则其运行正常

请让我知道这个碎片出了什么问题

编辑:当移植到Python 3.4时,同样可以正常工作,即当
nosleep=False
时,它不会停止刮取。早期版本是在Python 2.7中执行的

def getOCdata(ed = '25FEB2016', start = 540*60, stop = 960*60, waitFlag = True, nosleep = True):
    ptime = datetime.now()
    while True:
        if (ptime.hour*60*60 + ptime.minute*60 + ptime.second) > stop:
            break
        else:
            try:
                ptime = datetime.now()
                scrapedata = pd.DataFrame(scrapefn(ed))
                scrapedata = scrapedata.ix[:, 1:21]
                scrapedata['timestamp'] = ptime
                scrapedata.to_csv(datafile, index=False, mode='a', header=False)
                if nosleep == False:
                    end = datetime.now()
                    tdiff = end-ptime
                    time.sleep(1 - (tdiff.seconds + tdiff.microseconds*1.0/10**6))
            except:
                continue
    return 0

您可以通过将终止条件从
if
移动到
,而
本身(否定)来简化代码。@tobias_k行
(ptime.hour*60*60+ptime.minute*60+ptime.second)
计算从凌晨12点开始经过的秒数,然后将其与
stop
条件进行比较,即如果时间超过下午4点。是的,在终止时,if可以移动到