Dateieinlesung während des Downloads

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.
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Warum nicht?
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Horst73
User
Beiträge: 15
Registriert: Dienstag 5. Juni 2018, 14:08

SyntaxError

Missing parentheses in call to print Did you mean print(statements)? Antowrt: Nein, natürlich nicht... Will ja nicht eine 0 dort stehen haben...
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

Du sollst natürlich das Ausgeben, was Du für sinnvoll hältst. Was das ist, kannst nur Du wissen.
Horst73
User
Beiträge: 15
Registriert: Dienstag 5. Juni 2018, 14:08

Ah, ok.

Ja jetzt weiß ich wie du das meinst. Also die Datei wird zeilenweise eingelesen und abgearbeitet. Gibt es denn einen Befehl, mit dem ich vorab die Anzahl der Zeilen in der datei abfragen kann? Dann könnte ich natürlich problemlos den Fortschritt berechnen... ;)

Ich hätte noch eine Frage: Gibt es eine Möglichkeit, die url in einer varriablen zu speichern? Mit sicherheit, denke ich. Kann mir einer die Syntax dafür sagen? Also in etwa so nur als korrekten Code...

Code: Alles auswählen

url="http://mein-server.de/datei.dat
with requests.get('url', stream=True) as r:
Ich bin euch bisher unendlich dankbar, wie ihr mir bisher geholfen habt ;)

Lg Horst
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

nein, die Anzahl der Zeilen kannst Du nur herausfinden, wenn Du die ganze Datei gelesen hast. Was geht, ist die Größe der Datei in Bytes aus dem Header Content-Length zu lesen, falls der Server sie mitschickt.

Variablen kann man so benutzen, wie man sie immer benutzt, nicht als String.
Horst73
User
Beiträge: 15
Registriert: Dienstag 5. Juni 2018, 14:08

ok, zu guter letzt hätte ich och eine Frage ;)

Wenn ich zB sowas habe, dann plottet der mir alles in die selbe Zeile aber nebeneinander. Ich möchte, dass sich auf dem Bildschirm nur die Prozentzahl ändert. Wie kann ich das abwandeln?

Hab da schon viel gesehen mit dem sys modul. Aber alles was ich bisher probiert hatte führte immer dazu, dass jede Menge Text auf dem Bildschirm erschien...

Code: Alles auswählen

import time

for i in range(100):
    time.sleep(0.1)
    print('Downloading File FooFile.txt [%d% %]\r'%i, end="")
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

wie rufst Du denn das Programm auf? IDLE kann z.B. kein '\r'.
Horst73
User
Beiträge: 15
Registriert: Dienstag 5. Juni 2018, 14:08

Also aktuell unter windows...

Gedacht sein soll es aber für Linux...
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

die Windows-Konsole kann mit \r umgehen. Linux-Terminal sowieso.
Horst73
User
Beiträge: 15
Registriert: Dienstag 5. Juni 2018, 14:08

so, ich hab den fehler gefunden xD
Wie bekomm ich jetzt nur das % dort weg? Will das ohne das Zeichen verwenden...

Wie scho gesagt, man darf es nicht aus IDLE heraus starten... Sondern per doppelklick...

Nachtrag:
so ist man es los:

print("Text: %d text2" % zahler, end='\r')
Horst73
User
Beiträge: 15
Registriert: Dienstag 5. Juni 2018, 14:08

An dieser Stelle möchte ich mich herzlich für die tolle Hilfe bedanken. Dieses spezeille Projekt ist erfolgreich abgeschlossen.

Ich werde mich aber in Zukunft wahrscheinlich noch häufiger an euch wenden. Vielen Dank für eure Hilfe!!!!

Theman kann geschlossen werden...
Benutzeravatar
DeaD_EyE
User
Beiträge: 1012
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Geht auch, musst nur vorher die Größe wissen, damit du einen Fortschritt berechnen kannst.
Sofern du aber was anderes in der Konsole ausgibst, zerreißt es dir den Fortschrittsbalken.


Ich nutze manchmal progressbar2

Code: Alles auswählen

with requests.get('https://google.de', stream=True) as r:
    position = 0
    if 'Content-Length' in r.headers:
        size = int(r.headers['Content-Length'])
        #print(size)
        #print(r.headers)
        pbar = progressbar.ProgressBar(max_value=size, max_error=False)
        # Bei Heise ist der Content länger, als im Header angegeben, deswegen max_error=False
        pbar.init()
    else: # wenn keine Informationen über die Größe vorhanden sind
        pbar = progressbar.ProgressBar()
        pbar.init()
    for line in r.iter_lines():
        position += len(line) # position updaten
        time.sleep(0.2) # hier irgendwas machen, aber bloß nichts in der Konsole ausgeben.
        pbar.update(position) # progressbar updaten
    pbar.finish()

sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten