簡體   English   中英

告訴 Python 等待/暫停“for”循環

[英]Tell Python to wait/pause a 'for' loop

我有一個 Python 程序,它使用我定義為 nav(a, b) 的函數將我導航到一個網站,在這個網站上,我將下載一些 pyfits 數據以用於另一個腳本。 對於我擁有的目錄中的每組 (a,b),該站點都有一個不同的 pyfits 文件。

我想知道我是否可以使用for循環遍歷這個目錄,每次使用 nav(a, b) 函數時,告訴 python 在我下載文件時暫停,然后在我告訴它時再次恢復。 我以前在IDL 中做過類似的事情,但不知道如何使用 Python。

否則我想我會被困在運行程序 200 次,每次都替換 (a, b) 值,這將永遠持續下去。

如果要等待手動信號繼續,請等待用戶按Enter

蟒蛇2:

raw_input("Press Enter to continue...")

蟒蛇3:

input("Press Enter to continue...")

如果您可以下載 python 代碼中的文件,請執行此操作,而不是為每個文件執行手動任務。

您可以使用time.sleep()暫停執行 t 秒:

import time
time.sleep(1.3) # Seconds

演示:

import time

print "Start Time: %s" % time.ctime()
time.sleep(5)
print "End Time: %s" % time.ctime()

輸出

Start Time: Tue Feb 17 10:19:18 2009
End Time: Tue Feb 17 10:19:23 2009

使用while循環,等待下載完成:

for ... :
    nav(a,b)
    while downloading_not_finished:
         time.sleep(X)

因此,每 X 時間段測試一個條件,並再次測試,直到下載部分完成。

好的,這里有兩種在 Python 中暫停的方法。

  1. 您可以使用輸入功能。

     # Python 2 raw_input("Downloading....") # Python 3 input("Downloading....")

這將暫停程序,直到用戶按下Enter等。

  1. 您可以使用 time.sleep() 函數。

     import time time.sleep(number of seconds)

這將使 Python 腳本暫停您想要的任何秒數。

對於設計中的Python shell

import sys
from time import sleep

try:
    shell = sys.stdout.shell
except:
    print('Run It In Shell')
dots = '........';
shell.write('Downloading')
sleep(0.5)
for dot in dots:
    shell.write(dot)
    sleep(0.1)
shell.write('\n')
sleep(0.4)
shell.write('Saving Files')
sleep(0.5)
for doot in dots:
    shell.write(dot)
    sleep(0.1)
shell.write('\n')
sleep(0.4)

對於控制台中的 Python:

from time import sleep

print('Downloading')
sleep(1)
print('Saving Files')
sleep(1)

使用輸入功能。 它將暫停程序,直到提示已關閉/填寫。

最好的解決方案是在現有的 while 循環中放置另一個 while 循環:

while True:
#do something
asleep = True
while (asleep):
    if cv2.waitKey(1) == 32: #Wait for space key  
        asleep = False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM