Restliche Zeit?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Sannes
User
Beiträge: 7
Registriert: Mittwoch 22. April 2009, 21:27

Hallo,

Ich hab ein kleines Snippet im Internet gefunden das eine Fortschrittsanzeige ausgibt, funktioniert auch einwandfrei.

Aber ich hätte gerne das mir das Script noch ausrechnet wie lange es dauert bis die Anzeige durchgelaufen ist.

Leider weiß ich nicht mal Ansatzweise wie so etwas aussehen muss/könnte. Evtl. kann mir jemand ein paar Ratschläge geben wie man das realisieren könnte.

Code: Alles auswählen

class progressBar:
	def __init__(self, minValue = 0, maxValue = 10, totalWidth=12):
		self.progBar = "[]"   # This holds the progress bar string
		self.min = minValue
		self.max = maxValue
		self.span = maxValue - minValue
		self.width = totalWidth
		self.amount = 0       # When amount == max, we are 100% done 
		self.updateAmount(0)  # Build progress bar string

	def updateAmount(self, newAmount = 0):
		if newAmount < self.min: newAmount = self.min
		if newAmount > self.max: newAmount = self.max
		self.amount = newAmount

		# Figure out the new percent done, round to an integer
		diffFromMin = float(self.amount - self.min)
		percentDone = (diffFromMin / float(self.span)) * 100.0
		percentDone = round(percentDone)
		percentDone = int(percentDone)

		# Figure out how many hash bars the percentage should be
		allFull = self.width - 2
		numHashes = (percentDone / 100.0) * allFull
		numHashes = int(round(numHashes))

		# build a progress bar with hashes and spaces
		self.progBar = "[" + '#'*numHashes + ' '*(allFull-numHashes) + "]"

		# figure out where to put the percentage, roughly centered
		percentPlace = (len(self.progBar) / 2) - len(str(percentDone)) 
		percentString = str(percentDone) + "%"

		# slice the percentage into the bar
		self.progBar = self.progBar[0:percentPlace] + percentString + 
               self.progBar[percentPlace+len(percentString):]

	def __str__(self):
		return str(self.progBar)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Code: Alles auswählen

zeit/prozent*(100-prozent)
"zeit" ist die seit Beginn vergangene Zeit, "prozent" der aktuelle Fortschritt in Prozent.
Das Leben ist wie ein Tennisball.
lunar

Verwende doch einfach das progressbar-Modul:

Code: Alles auswählen

import time
from progressbar import ProgressBar, Bar, ETA, Percentage, FileTransferSpeed

widgets = [
        Percentage(), ' ', Bar(marker='#',left='[',right=']'),
        ' ', ETA(), ' ', FileTransferSpeed()
        ]

total = 100
progressbar = ProgressBar(widgets=widgets, maxval=total)
progressbar.start()
for i in xrange(total+1):
    progressbar.update(bytes_read)
    time.sleep(1)
progressbar.finish()
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Ich verstehe dich nicht. Als ich ein Paket aus dem pypi vorschlug, kritisiertest du, dass dieses Paket unter der GPL veröffentlicht wird. Jetzt schlägst du selber ein Paket vor, dass GPL-lizensiert ist.
lunar

Beachte das L vor dem "GPL" :)

Übrigens sollte das keine Kritik darstellen, sondern nur eine einfache Anmerkung, denn schließlich kann nicht jeder GPL-Pakete verwenden. Wenn das anders rüberkam als von mir beabsichtigt, dann bitte ich darum, das zu entschuldigen :oops:
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Ups, hab grad das L entdeckt. Jetzt gehe ich mich schämen und werde so rot wie du rosa bist: :oops:
Sannes
User
Beiträge: 7
Registriert: Mittwoch 22. April 2009, 21:27

Super danke lunar, hab das modul via apt-get installiert. Funktioniert einwandfrei.

Die Lizenz interessiert mich herzhaft wenig, da es eh nur privat genutzt wird.
Antworten