Online dokumente auslesen?

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
nevergod
User
Beiträge: 46
Registriert: Mittwoch 22. September 2010, 13:22

Guten Tag,

ich würde gerne mit python eine txt-datei auslesen die sich auf einem webspace befindet.
mit open("adresse",'r') scheints ja nicht zu klappen.

Kann man mit python trotzdem irgendwie onlinedateien auslesen?
Bekomme mit der open anweisung nen IOError. Schätze mal das funktioniert nur bei lokal abgespeicherten dateien.

mfG und vielen dank im vorraus,
NeverGod
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dafür kannst Du das urllib-Modul benutzen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
nevergod
User
Beiträge: 46
Registriert: Mittwoch 22. September 2010, 13:22

Vielen herzlichen Dank :) hat geklappt
edit:

kann man damit auch dateien von einem server herrunterladen?
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Kommt darauf an welche, aber Prinzipiell schon.

Solange du eine Datei auslesen kannst, solltest du sie auch neu schreiben können.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
nevergod
User
Beiträge: 46
Registriert: Mittwoch 22. September 2010, 13:22

Ich wollte .py dateien von dem server runterladen

würde es also mit datei = urlib.urlopen('pfad','r')
und
writefile = open(datei,'w')

gehen?

oder muss da ein anderer code herhalten?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Xynon1 hat geschrieben:Solange du eine Datei auslesen kannst, solltest du sie auch neu schreiben können.
Sicherlich nicht.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Klar, weil du ja nur den Text ausliest also kannst du ihn auch schreiben.

Aber in manchen Fällen kann das auch nicht funktionieren wie bei php-files also Dokumente die bei zugriff vom webserver ausgeführt werden.
Bei solchen bekommt man nur den generierten Text.

Verschlüsselt oder binäre dateien gehen prizipiell auch nur sind sie halt verschlüsselt
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Xynon1 hat geschrieben:Klar, weil du ja nur den Text ausliest also kannst du ihn auch schreiben.
Nein! Schon auf einer Workstation gibt es das Konzept von Read-Only. Bei Webservern ist das noch einmal etwas ganz anderes, schließlich regelt http afaik nicht, was mit übertragenden Dateien passiert.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
nevergod
User
Beiträge: 46
Registriert: Mittwoch 22. September 2010, 13:22

also wie gesagt ich will quasi per knopfdruck eine .py datei von meinem webspace runterladen.

oh und noch eine sache,
ich habe die datei jetzt mit x= urllib.urlopen .... , 'w')geöffnet und kann sie auch lesen. Wenn ich jetzt aber
x.write(sounso) eingebe, kommt das addinfourl kein writeattribut besitzt.

habe aber nirgends addinfourl benutzt! Was läuft da schief?

Code: Alles auswählen

                if actuallPW==pw:
                    x = urllib.urlopen("http://a*****loader/login/id.txt",'w')
                    x.urlwrite(neuid)
                    x.urlclose()
                    erfolg = Tk()
                    lab1 = Label(erfolg,text="Erfolg! Id geändert!")
                    lab1.pack()
                    okbut = Button(erfolg,text="OK", command = erfolg.destroy)
                    okbut.pack()
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

ja, weil urlopen kein mode-argument kennt, sondern nur lesen kann und urllib.urlopen("...") reicht dafür

@Hyperion sicher das geht auch nur wenn man die nötigen berechtigungen hat, aber das ist doch eine ganz andere geschichte
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
nevergod
User
Beiträge: 46
Registriert: Mittwoch 22. September 2010, 13:22

also kann ich auf dem server nix ändern / überschreiben?
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

jedenfalls nicht auf die art, aber wenn es dir nur um den tranport geht nutz doch ftp oder etwas entsprechendes
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
nevergod
User
Beiträge: 46
Registriert: Mittwoch 22. September 2010, 13:22

auf welche art dann? :K
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

bearbeite deine datei lokal und schicke sie dann zB. mit hilfe der ftplib hoch
http://docs.python.org/library/ftplib.html
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Xynon1 hat geschrieben: @Hyperion sicher das geht auch nur wenn man die nötigen berechtigungen hat, aber das ist doch eine ganz andere geschichte
Ja eben! Du hattest das aber behauptet! Aber damit ist es dann ja geklärt :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Ok, vieleicht habe ich mich missverständlich ausgedrückt,
aber ich meinte bzw sagte, dass man den text den man auslesen kann - also der dann zB. per .read() ausgelesen werden könnte, frei handhabbar ist.

Mit diesen Daten kann man dann alles machen, weil man ja schon zu den Text hat.
Es kann natürlich sein das man anderen Text ausliest, weil er zB .generiert wird, oder man kein handle auf die Datei bekommt da einem die nötigen Rechte fehlen.

Ich hoffe das ist etwas deutlicher ausgedrückt.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Antworten