bedingt *args übergeben...

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
Benutzeravatar
jens
Moderator
Beiträge: 8481
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Montag 6. März 2006, 23:52

Wie kann man das einfacher Lösen:

Code: Alles auswählen

        args = {"prefix": "PyDown_%s_" % self.request.environ["REMOTE_USER"]}
        if self.request.cfg["temp"]:
            args["dir"] = self.request.cfg["temp"]

        temp = NamedTemporaryFile(**args)
:?:

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Dienstag 7. März 2006, 00:32

jens hat geschrieben:Wie kann man das einfacher Lösen:
Hi Jens!

Das ist, in meinen Augen, eine schöne Lösung.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Dienstag 7. März 2006, 00:43

Hi

Kommt darauf an was die Funktion für Defaultwerte besitzt.

Ich hätte es wahrscheinlich so gelöst:

Code: Alles auswählen

pref = "PyDown_%s_" % self.request.environ["REMOTE_USER"]

temp = NamedTemporaryFile(prefix=pref, dir=self.request.cfg["temp"])
Aber ob dies wirklich schöner ist, ist eine andere Frage :)
Benutzeravatar
jens
Moderator
Beiträge: 8481
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 7. März 2006, 08:48

OK ich hab mal in den Sourcen geschnüffelt, das hätte ich machen sollen, bevor ich die Frage stellte: http://svn.python.org/view/python/trunk ... iew=markup

Wie man sehen kann wird NamedTemporaryFile so "definiert":

Code: Alles auswählen

def NamedTemporaryFile(mode='w+b', bufsize=-1, suffix="",
                       prefix=template, dir=None):
Demnach kann ich es ganz einfach machen:

Code: Alles auswählen

temp = NamedTemporaryFile(
    "prefix" = "PyDown_%s_" % self.request.environ["REMOTE_USER"],
    "dir" = self.request.cfg["temp"]
)
Mir ging es darum, wie ich "dir" setzten kann, damit man nicht immer explizit ein Verz. angeben muß. Min anderen Worten, welchen Wert muß self.request.cfg["temp"] haben, wenn das default-System-temp-Verz. genommen werden soll?
In dem Fall ist es einfach None.

Aber man kann doch nicht davon ausgehen, das bei einer ganze anderen Funktion bzw. bei jeder Funktion, der default-Wert immer mit None gesetzt werden kann, oder? Obwohl das eigentlich das Naheliegendste ist...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Dienstag 7. März 2006, 09:38

Hi

Ich dachte eben das sei eine Funktion von dir. Darum muss man halt nachschauen was es ist (vielleicht steht es auch in der Doku).

Gruss
Antworten