PYTHON - UNRAR: как создать поток для мониторинга статуса загрузки - PullRequest
0 голосов
/ 28 февраля 2019

Доброе утро,

Мне нужна помощь относительно моего сценария.Я новичок в Python, и я хотел бы знать, как я могу добавить поток, чтобы проверить мой процесс загрузки?

Здесь мой сценарий загрузки:

class Download:

  def __init__(self):
    self.path="FolderFiles"
    self.target=" /var/www/folder/Output"

def downloadFile(self):
        for root, dirs, files in os.walk(self.path, topdown=False):
          for name in files:
            print(name)
            rarFiles=os.path.join(root, name)
            unrar = "unrar x -y "+rarFiles+self.target
          os.system(unrar)
          #time.sleep(10)

дополнительная информация: я использовалpython 3.x с библиотекой unrar

Спасибо за помощь

Ответы [ 2 ]

0 голосов
/ 18 марта 2019

После большого количества испытаний я решил работать следующим образом: анализировать файлы после загрузки в зависимости от размера, времени загрузки и т. Д. Библиотека unrar не может предоставить никаких решений для проверки правильности процесса во время загрузки

Спасибо за вашу помощь

0 голосов
/ 28 февраля 2019

Это может помочь вам, если мое понимание верно, у вас есть куча zip-файлов, которые вы хотели бы загрузить ... и проверьте текущий статус c, вы можете ограничить эти операторы печати 25 минутами, если хотите, или каждым количеством X mb.

import requests

url_list = ["http://file-examples.com/wp-content/uploads/2017/02/zip_10MB.zip", "http://file-examples.com/wp-content/uploads/2017/02/zip_10MB.zip", "http://file-examples.com/wp-content/uploads/2017/02/zip_10MB.zip", "http://file-examplesc.com/wp-content/uploads/2017/02/zip_10MB.zipdd", "http://file-examples.com/wp-content/uploads/2017/02/zip_10MB.zip"]


def download_file(url, total_download_mb):
    local_filename = url.split('/')[-1]
    with requests.get(url, stream=True) as r:
        filesize = int(r.headers["Content-Length"]) / 1024 / 1024
        downloaded = 0
        with open(local_filename, 'wb') as f:
            for chunk in r.iter_content(chunk_size=8192): 
                if chunk:
                    f.write(chunk)
                    downloaded = (downloaded + len(chunk))
                    downloaded_mb = downloaded/1024/1024
                    print("%.2fmb / %.2fmb downloaded." % (downloaded_mb ,filesize))
        total_download_mb += downloaded_mb
        #download is finished could be unpacked ....
    return total_download_mb

def download_url_list(url_list):
    total_download_mb = 0
    failed_urls = []
    for i, url in enumerate(url_list):
        try:
            total_download_mb = download_file(url, total_download_mb)
            print("Total download: %.2fmb" % total_download_mb)
        except:
            failed_urls.append(url_list[i])
            print("failed by file:" + str(i))
    print("failed downloads")
    print(failed_urls)

download_url_list(url_list)
...