真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么在Python3中使用requests模塊顯示下載進度-創(chuàng)新互聯(lián)

怎么在Python3中使用requests模塊顯示下載進度?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名注冊虛擬主機、營銷軟件、網(wǎng)站建設、遵化網(wǎng)站維護、網(wǎng)站推廣。

Python主要用來做什么

Python主要應用于:1、Web開發(fā);2、數(shù)據(jù)科學研究;3、網(wǎng)絡爬蟲;4、嵌入式應用開發(fā);5、游戲開發(fā);6、桌面應用開發(fā)。

一、配置request

1. 相關資料

請求關鍵參數(shù):stream=True。默認情況下,當你進行網(wǎng)絡請求后,響應體會立即被下載。你可以通過 stream 參數(shù)覆蓋這個行為,推遲下載響應體直到訪問 Response.content 屬性。

tarball_url = 'https://github.com/kennethreitz/requests/tarball/master'
r = requests.get(tarball_url, stream=True)

此時僅有響應頭被下載下來了,連接保持打開狀態(tài),因此允許我們根據(jù)條件獲取內(nèi)容:

if int(r.headers['content-length']) < TOO_LONG:
 content = r.content
 ...

進一步使用 Response.iter_contentResponse.iter_lines 方法來控制工作流,或者以 Response.raw 從底層urllib3的 urllib3.HTTPResponse

from contextlib import closing
with closing(requests.get('http://httpbin.org/get', stream=True)) as r:
  # Do things with the response here.

保持活動狀態(tài)(持久連接)

歸功于urllib3,同一會話內(nèi)的持久連接是完全自動處理的,同一會話內(nèi)發(fā)出的任何請求都會自動復用恰當?shù)倪B接!

注意:只有當響應體的所有數(shù)據(jù)被讀取完畢時,連接才會被釋放到連接池;所以確保將 stream 設置為 False 或讀取 Response 對象的 content 屬性。

2. 下載文件并顯示進度條

with closing(requests.get(self.url(), stream=True)) as response:
  chunk_size = 1024 # 單次請求大值
  content_size = int(response.headers['content-length']) # 內(nèi)容體總大小
  progress = ProgressBar(self.file_name(), total=content_size,
                   unit="KB", chunk_size=chunk_size, run_status="正在下載", fin_status="下載完成")
  with open(file_name, "wb") as file:
    for data in response.iter_content(chunk_size=chunk_size):
      file.write(data)
      progress.refresh(count=len(data))

二、進度條類的實現(xiàn)

在Python3中,print()方法的默認結(jié)束符(end='\n'),當調(diào)用完之后,光標自動切換到下一行,此時就不能更新原有輸出。

將結(jié)束符改為“\r”,輸出完成之后,光標會回到行首,并不換行。此時再次調(diào)用print()方法,就會更新這一行輸出了。

結(jié)束符也可以使用“\d”,為退格符,光標回退一格,可以使用多個,按需求回退。

在結(jié)束這一行輸出時,將結(jié)束符改回“\n”或者不指定使用默認

下面是一個格式化的進度條顯示模塊。代碼如下:

class ProgressBar(object):
  def __init__(self, title,
         count=0.0,
         run_status=None,
         fin_status=None,
         total=100.0,
         unit='', sep='/',
         chunk_size=1.0):
    super(ProgressBar, self).__init__()
    self.info = "【%s】%s %.2f %s %s %.2f %s"
    self.title = title
    self.total = total
    self.count = count
    self.chunk_size = chunk_size
    self.status = run_status or ""
    self.fin_status = fin_status or " " * len(self.status)
    self.unit = unit
    self.seq = sep
  def __get_info(self):
    # 【名稱】狀態(tài) 進度 單位 分割線 總數(shù) 單位
    _info = self.info % (self.title, self.status,
               self.count/self.chunk_size, self.unit, self.seq, self.total/self.chunk_size, self.unit)
    return _info
  def refresh(self, count=1, status=None):
    self.count += count
    # if status is not None:
    self.status = status or self.status
    end_str = "\r"
    if self.count >= self.total:
      end_str = '\n'
      self.status = status or self.fin_status
    print(self.__get_info(), end=end_str)

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)成都網(wǎng)站設計公司行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)成都網(wǎng)站設計公司的支持。

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、網(wǎng)站設計器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


新聞標題:怎么在Python3中使用requests模塊顯示下載進度-創(chuàng)新互聯(lián)
標題鏈接:http://weahome.cn/article/csgcie.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部