infos zu....

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Gast

Mittwoch 14. Juli 2004, 16:53

hi zusammen!

kann mir jmd. ein bisschen mehr zu folgendem sagen, vor allem zu rb und 1024

Code: Alles auswählen

ftp.storbinary('STOR testdatei-neu', open('testdatei','rb',1024)) 
danke im voraus

rolgal
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Mittwoch 14. Juli 2004, 17:07

Hi rolgal!

Das b steht für binary (es wird also eine Binärdatei gelesen), 1024 ist die Puffergröße, die eingelesen wird.
Versuch mal help(open), da stehts genauer :wink:

Gruß, mawe
Gast

Mittwoch 14. Juli 2004, 17:22

hi mawe

help(open) im idle?

mfg rolgal
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Mittwoch 14. Juli 2004, 17:30

Nein (naja, ich hab noch nie was mit idle gemacht, keine Ahnung wie das dort geht).
Einfach in der Shell (oder Dos-Fenster) python und dann help(open) eingeben.
(oder vielleicht eleganter: pydoc open :wink:)

UPDATE: habs grad im idle ausprobiert: help(open) geht dort auch

Gruß, mawe
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Mittwoch 14. Juli 2004, 18:19

Hi rolgal,

statt open sollte besser file genommen werden, wer weiss, wann open depricatet wird.
Hier wird an storbinary einfach ein file-Objekt übergeben.

Code: Alles auswählen

datei = file('testdatei', 'rb', 1024)
ftp.storbinary('STOR testdatei-neu', datei)
ist praktisch das selbe wie deine Zeile, mit dem Unterschied, daß es besser lesbar ist und gleich mit

Code: Alles auswählen

datei.close()
die Datei geschlossen werden kann, und nicht erst geschlossen wird, wenn mal wieder der GC drüberstolpert.


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
Gast

Mittwoch 14. Juli 2004, 19:32

hi dookie!

klar, daran habe ich auch schon gedacht.

was ich noch interessant finde: warum gibt man mit rb den binärmodus an? das wird doch schon mit storbinary getan oder bringe ich wieder mal was durcheinander?


mfg

rolgal
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Mittwoch 14. Juli 2004, 19:42

das 'rb' gibt den binärmodus für das file-Objekt an, ist unter Unix/Linux ohne Wirkung, aber bei Windows ist das wichtig, also wenn man unter Windows eine binäre Datei in Python ohne das b öffnet gibts Datenmüll. Dieser würde dann auf den FTP hochgeladen.
also das storebinary und das 'rb' haben nichts miteinander zu tun.


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
Gast

Mittwoch 14. Juli 2004, 19:52

hi dookie!

danke wiedermal.

mfg

rolgal
joerg
User
Beiträge: 188
Registriert: Samstag 17. August 2002, 17:48
Wohnort: Berlin
Kontaktdaten:

Freitag 16. Juli 2004, 13:13

Dookie hat geschrieben: ...
statt open sollte besser file genommen werden, wer weiss, wann open depricatet wird.
...
Zu diesem Thema gibt zumindest eine kontroverse Diskussion, und solange Guido himself was zu bestimmen hat, wird es wohl open() noch geben. ;-)

Allerdings suggeriert die Doku hier was Falsches.

Siehe auch: http://mail.python.org/pipermail/python ... 45921.html

(den ganzen Thread anschauen!)

Grüße!
Jörg
"Sie sind nicht berechtigt, unrechtmäßige Kopien dieses Datenträgers zu erstellen." - Microsoft-Weisheit auf einer CD von MS-VisualC++-6.0
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Freitag 16. Juli 2004, 14:27

Hi joerg,

hab mich grad durch den Thread durchgearbeitet.
Also wenn ich das für mich zusammenfasse, verwende ich file, wenn ich ein fileobjekt haben will, open kann als "Factoryfunction" angesehen werden, die
1. für Abwärtskompatibilität sorgt und
2. könnte open in zukünftigen Versionen von Python, je nach Parametern auch andere Objekte liefern, die den IO-Mechanismus von File nachbilden.
Ich werde wohl auch in Zukunft file statt open verwenden.


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
joerg
User
Beiträge: 188
Registriert: Samstag 17. August 2002, 17:48
Wohnort: Berlin
Kontaktdaten:

Freitag 16. Juli 2004, 16:44

Hi Dookie,

Genau, so habe ich den Thread auch verstanden. Ich werde wohl noch bei open() bleiben, da ich mich an file() sowieso noch nicht gewöhnt habe, sowas dauert bei mir immer ein paar Versionen. Allerdings werde ich mir verkneifen, Kindklassen von open abzuleiten. ;-)

Gruss!
Jörg
"Sie sind nicht berechtigt, unrechtmäßige Kopien dieses Datenträgers zu erstellen." - Microsoft-Weisheit auf einer CD von MS-VisualC++-6.0
Antworten