【问题标题】:How can I find out the current status of the request?如何查看请求的当前状态?
【发布时间】:2020-08-07 03:35:31
【问题描述】:

如何查看此请求的当前进度?在文件完成之前不会显示任何内容,如果此请求仍处于活动状态,我想设置某种指示符。

import requests

with open('file.txt', 'r') as f:
    urls = f.readlines()

datalist=[]
for url in urls:
    data = requests.get(url)
    datalist.append(data.text)

with open('file_complete.txt', 'w') as f:
    for item in datalist:
        f.write("%s\n" % item)

【问题讨论】:

  • 您可以在requests.gets(url) 之前和datalist.append(data.text) 之后添加print() 语句。至少您可以通过 URL 跟踪进度。
  • 如果您希望文件中的进度也跟随,您应该将with 语句嵌套在for 循环中——这样每个requests.get(url) 的结果将被写入文件每次成功getsurl(提示:如果你这样做,你不再需要datalist
  • @TimothyWong 你能解释一下吗?我不理解。谢谢!
  • 为了更清楚,我会发布答案
  • 你在下载一些大文件吗?

标签: python file time python-requests status


【解决方案1】:

您可以在 requests.gets(url) 之前和 datalist.append(data.text) 之后添加 print() 语句。至少您可以通过 URL 跟踪进度。

for url in urls:
    print("Getting " + url)
    data = requests.get(url)
    datalist.append(data.text)
    print(url + " successfully downloaded")

但是,您的代码只有在 所有 URL 下载后才会写入文件。如果程序在任何时候失败,file_complete.txt 将不会被创建。所以我建议在任何 URL 下载成功后写入文件。

import requests

with open('file.txt', 'r') as f:
    urls = f.readlines()

# datalist=[]  // No longer needed
for url in urls:
    data = requests.get(url)

    with open('file_complete.txt', 'a+') as f:   #change to mode "a+" to append
        f.write(data.text + "\n")

可以进行的另一项改进——您的代码假定所有 URL 都是有效的。我们可以使用try-except 块来捕获错误。

import requests

with open('file.txt', 'r') as f:
    urls = f.readlines()

# datalist=[]  // No longer needed
for url in urls:
    try:
        data = requests.get(url)
    except:
        printf(url + " failed")
        continue   #moves on to the next url as nothing to write to file

    with open('file_complete.txt', 'a+') as f:   #change to mode "a+" to append
        f.write(data.text + "\n")

【讨论】:

    【解决方案2】:

    requests.get() 是一个阻塞调用。如果您想有更多的控制权,您可以在单独的线程中发送您的请求。如果您对此感到担忧,也可以添加 timeouts。但是不,没有办法检查正在进行的获取请求的进度。

    【讨论】:

      猜你喜欢
      • 2023-02-17
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-17
      • 2012-03-20
      • 2022-11-11
      • 2013-03-15
      相关资源
      最近更新 更多