python - try block 之前的语句等待try完成才执行

标签 python try-catch

我编写了一个简单的 Python (3.2) 脚本来下载一系列文件。它完成了工作,但在文件下载开始之前,try block 之前的第一个打印语句不会执行。我期望看到“正在下载 1...”,然后等待几分钟,然后它会打印“成功!”或“失败!”然后。然而,这一切都是在文件下载后同时发生的。它仍然以正确的顺序打印(即“正在下载 1...成功!”),但我一辈子都无法弄清楚它为什么挂起。

from urllib import request

for i in range(1,35):
    url = "http://example.com/" + str(i) + ".mp4"   
    print("Downloading " + str(i) + "...", end='') #this doesn't happen until after the try
    try:    
        resp = request.urlopen(url)
        local = open(str(i) + '.mp4', 'wb') 
        local.write(resp.read())
        local.close()   
        print("SUCCESS!")
    except:
        print("FAILURE!")

最佳答案

这与 try block 无关。输出效果很好,但它被缓冲了。您的终端很可能是行缓冲的,这意味着在相应行完全输出之前您看不到输出。您可以显式刷新它:sys.stdout.flush()

关于python - try block 之前的语句等待try完成才执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14084352/

相关文章:

python - 列的 Pandas DataFrame.reset_index

python - 来自具有频率 python 的数据框的 WordCloud

c# - 方法 - 32 位与 try-catch 以及 iSeries ODBC 驱动程序

java - do-while 循环似乎不起作用 (Java)

java - BufferedReader 无限循环 - Java

python - 从 MySQL 获取表到 Pandas 的最快方法

python - 将条形图转变为正态分布

python - CSRF token 只是在 django 中随机触发

Java 捕获异常和子类

java - 用于扫描的简单 try & catch 代码不适用于十进制值