hi.
erstmal frohe weihnachten an alle
alsooo ich hab mich entschlossen python zu lernen, grund ist ganz einfach: ich programmier gerne.
meine bisherigen erfahrungen:
- java
- c++
- c
- php
- sql
- asm
asm mag ich nich so *g*
so, ich hab mich mal ran gesetzt und: [wiki]Tutorial[/wiki] durchgearbeitet. hab auch alles verstanden, nur irgendwie fehlt mir der bezug. also habt ihr vllt. aufgaben (net soo schwere) die ich lösen könnte oder gute tutorials mit beispielen (nem taschenrechner oder so)?!
liebe grüße und danke schonmal!
err0r
ps: ist es möglich mit python webanwendungen wie in php zu schreiben?
soweit ich weiss schon, denn wenn ja hätte ich ne projektidee
blutiger anfänger in python sucht hilfe :)
Hi und Willkommen im Forum.
Wenn es nichts spezielles sein soll, dan kannst du mal hier nach ein par Tutorials schauen: http://www.python-forum.de/forum-21.html
Ist alles möglich für Python dabei.
Und "A Byte of Python", "Wie ein Informatiker denken lernen ... mit Python" sind nicht schlecht (wobei die nciht gerade PEP8 einhalten. Aber das ist eine andere Geschichte.). -> [wiki]Tutorial[/wiki]
Dan sollte [wiki]FAQ#WieFangeIchAlsEinsteigerAn[/wiki]nicht fehlen (Deutschsprachige Lektüren im Netz #).
Falls du vorhast ernstahft dich mit Python zu beschäftigen solltest du auch mal den PEP8 Styleguid lesen! Das ist mMn sehr wichtig -> http://www.python.org/dev/peps/pep-0008/
lg und schönen rutsch ins neue Jahr
sape
Wenn es nichts spezielles sein soll, dan kannst du mal hier nach ein par Tutorials schauen: http://www.python-forum.de/forum-21.html
Ist alles möglich für Python dabei.
Und "A Byte of Python", "Wie ein Informatiker denken lernen ... mit Python" sind nicht schlecht (wobei die nciht gerade PEP8 einhalten. Aber das ist eine andere Geschichte.). -> [wiki]Tutorial[/wiki]
Dan sollte [wiki]FAQ#WieFangeIchAlsEinsteigerAn[/wiki]nicht fehlen (Deutschsprachige Lektüren im Netz #).
Falls du vorhast ernstahft dich mit Python zu beschäftigen solltest du auch mal den PEP8 Styleguid lesen! Das ist mMn sehr wichtig -> http://www.python.org/dev/peps/pep-0008/
lg und schönen rutsch ins neue Jahr
sape
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi err0r!err0r hat geschrieben:habt ihr vllt. aufgaben (net soo schwere) die ich lösen könnte
Willkommen im Python-Forum!
Ich hätte eine kleine Aufgabe für dich.
Im Thread http://www.python-forum.de/topic-8406.html hat droptix die Frage gestellt, ob es (in Python eingebaut) eine Möglichkeit gibt, CAB-Dateien zu entpacken. Die gibt es leider nicht.
Wie wäre es, wenn du ein Modul schreiben könntest, welches eine einfach zu handhabende Schnittstelle zum Entpacken von CAB-Dateien zur Verfügung stellt.
Die Einfachste Art ist, auf die dafür bereits vorgesehenen Programme "EXTRACT.EXE" (unter Windows) und CABEXTRACT (unter Linux) zurück zu greifen.
Du müsstest nur eine Funktion schreiben, die für beide Betriebssysteme nach aussen hin gleich aussieht und intern, je nach Plattform (sys.platform) auf das eine oder andere Programm zugreift und aufruft.
Programmaufrufe passieren über das Modul ``subprocess``. Natürlich solltest du auch irgendwie darauf reagieren, wenn eines der Programme nicht aufgefunden werden kann...
Ich finde, dass wäre ein nützlicher Beitrag, nicht so schwer und bringt Erfahrung im Umgang mit externen Programmaufrufen.
Später einmal, könntest du dich ja mit dem Algorithmus zum Entpacken von CAB-Dateien befassen. Vielleicht könntest du dann sogar eine reine Python-Lösung programmieren. Oder unter Linux (vielleicht auch unter Windows), direkt auf die libmspack zugreifen. Z.B. über das ctypes-Modul...
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
-
- User
- Beiträge: 6
- Registriert: Dienstag 26. Dezember 2006, 03:50
- Wohnort: Erkelenz
- Kontaktdaten:
hi!
also erstmal nen riesen dankeschön an sape und gerold für die ganzen informationen!
ich werde mir heute deine links sape anschauen und dann auch versuchen (wird schon klappen ) das problem von dir zu lösen gerold
wenn ichs geschafft hab und/oder wenn ich weitere fragen hab meld ich mich
lg
err0r
also erstmal nen riesen dankeschön an sape und gerold für die ganzen informationen!
ich werde mir heute deine links sape anschauen und dann auch versuchen (wird schon klappen ) das problem von dir zu lösen gerold
wenn ichs geschafft hab und/oder wenn ich weitere fragen hab meld ich mich
lg
err0r
klar, es gibt fuer apache eienen mod_python, wenn du dein c0de aber erstmal nur testen willst reicht ein kleienr python script als server ausps: ist es möglich mit python webanwendungen wie in php zu schreiben?
soweit ich weiss schon, denn wenn ja hätte ich ne projektidee
theoretisch kannst du wirklich alles (sogar assembler) als cgi script benutyen, es ist alles nur eien frage wie sehr die sprache als solches unterstuezt wird
edit:
aos, es gibt auch richtige frameworks fuer web-anwendungen in python: http://wiki.python.org/moin/WebFrameworks
cp != mv
mod_python macht meiner Meinung nach aber nur Sinn, wenn man da auch ein schönes Web-Framework wie Django dranhängt. CherryPy ist für kleinere Projekte auch recht cool, weil es den Server gleich mitbringt. Da spart man sich das Einarbeiten in die Apache-KonfigurationCosti hat geschrieben:klar, es gibt fuer apache eienen mod_python, wenn du dein c0de aber erstmal nur testen willst reicht ein kleienr python script als server ausps: ist es möglich mit python webanwendungen wie in php zu schreiben?
soweit ich weiss schon, denn wenn ja hätte ich ne projektidee
@gerold Gib's zu, du bist nur zu faul, das selbst zu schreiben
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi lunar!lunar hat geschrieben:@gerold Gib's zu, du bist nur zu faul, das selbst zu schreiben
Der Gedanke, so etwas auf die Schnelle selber zu schreiben, ist mir sogar kurzzeitig gekommen.
Allerdings muss ich in ca. 14 Tagen ein funktionierendes Schnittstellenprogramm für Bankomatkassen-Terminals fertig haben und habe erst vor ein paar Tagen mit der Programmierung begonnen.
Jetzt können Python und wxPython beweisen, dass man damit in kurzer Zeit, produktiv einsetzbare, hochwertige Lösungen programmieren kann, denn dieses Programm wird ein bis zwei Tage lang von der in Österreich dafür zuständigen Firma getestet und dann zertifiziert. ...hoffentlich!
Also gebe ich meine Programmideen für die nächsten Tage an andere weiter.
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Dan wünsche ich dir viel glück Halte uns auf den Laufenden. Würde gerne dein fazit zu Python und wxPython in dem Kontext wissen. obwohl ich schon die Antwort kennegerold hat geschrieben: Jetzt können Python und wxPython beweisen, dass man damit in kurzer Zeit, produktiv einsetzbare, hochwertige Lösungen programmieren kann, denn dieses Programm wird ein bis zwei Tage lang von der in Österreich dafür zuständigen Firma getestet und dann zertifiziert. ...hoffentlich!
lg
Dem kann ich mich nur anschließen!sape hat geschrieben:Dan wünsche ich dir viel glück Halte uns auf den Laufenden. Würde gerne dein fazit zu Python und wxPython in dem Kontext wissen. obwohl ich schon die Antwort kennegerold hat geschrieben: Jetzt können Python und wxPython beweisen, dass man damit in kurzer Zeit, produktiv einsetzbare, hochwertige Lösungen programmieren kann, denn dieses Programm wird ein bis zwei Tage lang von der in Österreich dafür zuständigen Firma getestet und dann zertifiziert. ...hoffentlich!
Außerdem kann ich noch hinzufügen, dass das ein Scherz war und ich natürlich niiiieeeemals ernsthaft auf die Idee gekommen wäre, dass du faul bist
-
- User
- Beiträge: 6
- Registriert: Dienstag 26. Dezember 2006, 03:50
- Wohnort: Erkelenz
- Kontaktdaten:
gerold hat geschrieben:Hi err0r!err0r hat geschrieben:habt ihr vllt. aufgaben (net soo schwere) die ich lösen könnte
Willkommen im Python-Forum!
Ich hätte eine kleine Aufgabe für dich.
hi.
also ich hab das mal mit dem cab entpacken probiert und es läuft soweit auch, allerdings hab ich eine frage.
..schaut einfach ma in mein code..rest steht unten
Code: Alles auswählen
#!/usr/bin/python
import sys
import subprocess
if sys.platform == 'linux2':
#datei_lin = raw_input("Choose the cab file which you want to extract: ")
#das problem ist, ich kann das jetzt hier einlesen aber wie sage ich dann bei command_lin = "cabextract -q" das er da die variable als datei nehmen soll?
command_lin = "cabextract -q test.cab"
if(subprocess.Popen(command_lin, shell=True, stdout=subprocess.PIPE) != True):
print "extracting done"
else:
print "extracting failed"
elif sys.platform == 'win32':
#datei_win = raw_input("Choose the cab file whoch you want to extract: ")
command_win = "extract.exe..." # muss ich noch gucken wie das unter windows geht
if(subprocess.Popen(command_win, shell=True, stdout=subprocess.PIPE) != True):
print "extracting done"
else:
print "extracting failed"
else:
print "decompress_cab could not locate your OS - error"
very fine
aber:
auserdem willst du doch die leute, die windows 64 bit benutzen (Gott segne sie...) nicht im stich lassen
gruesse
costi
[/quote]
aber:
"os.system(command_lin)" mueste reichenif(subprocess.Popen(command_lin, shell=True, stdout=subprocess.PIPE) != True):
auserdem willst du doch die leute, die windows 64 bit benutzen (Gott segne sie...) nicht im stich lassen
gruesse
costi
[/quote]
cp != mv
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi costi!Costi hat geschrieben:"os.system(command_lin)" mueste reichen
``os.system()`` poppt dir in vielen Fällen einfach eine Konsole auf. Für eine Schnittstelle, wie diese es werden soll, empfehle ich eher ``subprocess``.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
...auserdem willst du doch die leute, die windows 64 bit benutzen (Gott segne sie...) nicht im stich lassen
Code: Alles auswählen
sys.platform.startswith("win")
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi err0r!
Super, dass du dich diesem Thema angenommen hast!
Hier ein paar Punkte, die du vielleicht beachten solltest.
- Es hat sich eingebürgert, vier Leerzeichen zum Einrücken zu verwenden. So lässt sich der Code untereinander gut austauschen.
- Versuche eine Zeile nicht länger als ca. 80 Zeichen lang werden zu lassen. Wir möchten den Code ja lesen können, ohne ständig hin und her scrollen zu müssen.
- Verwende Funktionen
- Verwende ``if __name__ == "__main__"``
- Schreibe Docstrings
So könnte die grobe Struktur des Python-Moduls aussehen:
Das ist aber nur ein grober Vorschlag. Niemand muss sich daran halten.
Ich habe eine Fehler-Klasse eingebaut, damit du siehst, wie so etwas funktioniert. Dann habe ich die Doc-Strings im reStructuredText-Format geschrieben, das von EpyDoc interpretiert werden kann. Und mit optparse lassen sich Kommandozeilenparameter parsen und gleichzeitig die Kommandozeilen-Hilfe (--help) generieren.
mfg
Gerold
Super, dass du dich diesem Thema angenommen hast!
Hier ein paar Punkte, die du vielleicht beachten solltest.
- Es hat sich eingebürgert, vier Leerzeichen zum Einrücken zu verwenden. So lässt sich der Code untereinander gut austauschen.
- Versuche eine Zeile nicht länger als ca. 80 Zeichen lang werden zu lassen. Wir möchten den Code ja lesen können, ohne ständig hin und her scrollen zu müssen.
- Verwende Funktionen
- Verwende ``if __name__ == "__main__"``
- Schreibe Docstrings
So könnte die grobe Struktur des Python-Moduls aussehen:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
"""
Entpackt CAB-Dateien.
Created: 2006-12-27 by err0r
Requirements: Windows: extract.exe
Linux und Co.: cabextract
"""
import os
import sys
import optparse
# Fehler-Klassen
class FileNotFound(IOError):
def __init__(self, filename):
self.filename = filename
def __str__(self):
return "Die Datei '%s' konnte nicht gefunden werden." % self.filename
def extract(cabfilename, destination_dir = "."):
"""
Entpackt das angegebene CAB-File in den Zielordner.
:param cabfilename: Dateiname und Pfad zum CAB-File das entpackt werden soll.
:param destination_dir: Pfad zum Ordner in den das CAB-File entpackt
werden soll. Existiert der Ordner nicht, dann wird dieser erstellt.
:return: True, wenn die CAB-Datei erfolgreich entpackt wurde.
False, wenn die CAB-Datei nicht entpackt werden konnte.
"""
# Prüfen ob CAB-Datei existiert
if not os.path.isfile(cabfilename):
raise FileNotFound(cabfilename)
if sys.platform.startswith("win"):
pass
else:
pass
def main():
"""
Wennn das Python-Modul über die Kommandozeile aufgerufen wird...
"""
# - Kommandozeilenparameter parsen. Z.B. mit ``optparse``
# - extract ausführen
pass
if __name__ == "__main__":
main()
Ich habe eine Fehler-Klasse eingebaut, damit du siehst, wie so etwas funktioniert. Dann habe ich die Doc-Strings im reStructuredText-Format geschrieben, das von EpyDoc interpretiert werden kann. Und mit optparse lassen sich Kommandozeilenparameter parsen und gleichzeitig die Kommandozeilen-Hilfe (--help) generieren.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Noch ein paar Tipps: ich würde nicht auf linux2 und win* testen, sondern auf win* und "etwas anderes", da "etwas anderes" meist Unix-System bedeutet und daher cabextract nutzen müsste.
Und noch was: subprocess.Popen erwartet als ersten Parameter eine Liste. Obwohl es zwar Strings akzeptiert, rate wich wirklich dazu, dort eine Liste zu übergeben. Dann kann es sich selbst um das Escapen von Leerzeichen etc. kümmern.
Und noch was: subprocess.Popen erwartet als ersten Parameter eine Liste. Obwohl es zwar Strings akzeptiert, rate wich wirklich dazu, dort eine Liste zu übergeben. Dann kann es sich selbst um das Escapen von Leerzeichen etc. kümmern.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- User
- Beiträge: 6
- Registriert: Dienstag 26. Dezember 2006, 03:50
- Wohnort: Erkelenz
- Kontaktdaten:
hi.Leonidas hat geschrieben:Noch ein paar Tipps: ich würde nicht auf linux2 und win* testen, sondern auf win* und "etwas anderes", da "etwas anderes" meist Unix-System bedeutet und daher cabextract nutzen müsste.
hab das probiert, allerdings funktionierte das nicht.
Code: Alles auswählen
if sys.platform == 'linux*':
....
und @ gerold:
hab mir dein code angeguckt und werde mein quellcode jetzt mal verbessern. danke für deine anregungen
liebe grüße
err0r
Derartige Vergleich stellt man in Python anders an:err0r hat geschrieben: hab das probiert, allerdings funktionierte das nicht.wenn ich das so abfrage wird das nicht true, er beachtet das * nicht als "ausfüllzeichen" sondern als festen teil des strings linux, also er denkt der name wäre "linux*". hoffe du weisst was ich meinCode: Alles auswählen
if sys.platform == 'linux*': ....
Code: Alles auswählen
# Wahr, wenn sys.platform mit dem Text "linux" anfängt
if sys.platform.startswith('linux'):
# Wahr, wenn der Text "linux" an einer beliebigen Stelle in sys.platform steht
if 'linux' in sys.platform:
lunar
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Wie gesagt, ich würd gar nicht erst auf linux* testen, linux1 wird von Python sowieso nicht unterstützt und der dort Benötigte Befehl ist der gleiche wie bei *BSD. Somit ist der einzige Sonderfall Windows.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- User
- Beiträge: 6
- Registriert: Dienstag 26. Dezember 2006, 03:50
- Wohnort: Erkelenz
- Kontaktdaten:
oh, habe ich verbessert.
zeige euch wenn alles klappt heut abend meine neue version
dannach kommt glaub ich nen taschenrechner
mfg
err0r
zeige euch wenn alles klappt heut abend meine neue version
dannach kommt glaub ich nen taschenrechner
mfg
err0r
Microsoft Windows....
...and now it's time...
.....for a real OS:
use[b] L I N U X[/b] !!!
...and now it's time...
.....for a real OS:
use[b] L I N U X[/b] !!!