Seite 1 von 1
bedingt *args übergeben...
Verfasst: Montag 6. März 2006, 23:52
von jens
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)

Re: bedingt *args übergeben...
Verfasst: Dienstag 7. März 2006, 00:32
von gerold
jens hat geschrieben:Wie kann man das einfacher Lösen:
Hi Jens!
Das ist, in meinen Augen, eine schöne Lösung.
lg
Gerold

Verfasst: Dienstag 7. März 2006, 00:43
von rayo
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

Verfasst: Dienstag 7. März 2006, 08:48
von jens
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...
Verfasst: Dienstag 7. März 2006, 09:38
von rayo
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