blutiger anfänger in python sucht hilfe :)

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.
err0r
User
Beiträge: 6
Registriert: Dienstag 26. Dezember 2006, 03:50
Wohnort: Erkelenz
Kontaktdaten:

blutiger anfänger in python sucht hilfe :)

Beitragvon err0r » Dienstag 26. Dezember 2006, 03:57

hi.

erstmal frohe weihnachten an alle :D


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 8)
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Beitragvon sape » Dienstag 26. Dezember 2006, 08:30

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
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: blutiger anfänger in python sucht hilfe :)

Beitragvon gerold » Dienstag 26. Dezember 2006, 09:03

err0r hat geschrieben:habt ihr vllt. aufgaben (net soo schwere) die ich lösen könnte

Hi err0r!

Willkommen im Python-Forum!

Ich hätte eine kleine Aufgabe für dich. 8)

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.
err0r
User
Beiträge: 6
Registriert: Dienstag 26. Dezember 2006, 03:50
Wohnort: Erkelenz
Kontaktdaten:

Beitragvon err0r » Dienstag 26. Dezember 2006, 14:50

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 :D) das problem von dir zu lösen gerold :)


wenn ichs geschafft hab und/oder wenn ich weitere fragen hab meld ich mich :)


lg
err0r
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Beitragvon Costi » Dienstag 26. Dezember 2006, 15:30

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


klar, es gibt fuer apache eienen mod_python, wenn du dein c0de aber erstmal nur testen willst reicht ein kleienr python script als server aus
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
lunar

Beitragvon lunar » Dienstag 26. Dezember 2006, 15:43

Costi hat geschrieben:
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


klar, es gibt fuer apache eienen mod_python, wenn du dein c0de aber erstmal nur testen willst reicht ein kleienr python script als server aus


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-Konfiguration ;)

@gerold Gib's zu, du bist nur zu faul, das selbst zu schreiben 8)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Dienstag 26. Dezember 2006, 18:04

lunar hat geschrieben:@gerold Gib's zu, du bist nur zu faul, das selbst zu schreiben 8)

Hi lunar!

Der Gedanke, so etwas auf die Schnelle selber zu schreiben, ist mir sogar kurzzeitig gekommen. :wink:

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! :roll:

Also gebe ich meine Programmideen für die nächsten Tage an andere weiter. :twisted:

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Beitragvon sape » Dienstag 26. Dezember 2006, 19:03

gerold 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! :roll:
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 kenne ;) :)

lg
lunar

Beitragvon lunar » Dienstag 26. Dezember 2006, 20:21

sape hat geschrieben:
gerold 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! :roll:
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 kenne ;) :)


Dem kann ich mich nur anschließen!

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 ;)
err0r
User
Beiträge: 6
Registriert: Dienstag 26. Dezember 2006, 03:50
Wohnort: Erkelenz
Kontaktdaten:

Re: blutiger anfänger in python sucht hilfe :)

Beitragvon err0r » Mittwoch 27. Dezember 2006, 02:33

gerold hat geschrieben:
err0r hat geschrieben:habt ihr vllt. aufgaben (net soo schwere) die ich lösen könnte

Hi err0r!

Willkommen im Python-Forum!

Ich hätte eine kleine Aufgabe für dich. 8)



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"
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Beitragvon Costi » Mittwoch 27. Dezember 2006, 03:25

very fine
aber:
if(subprocess.Popen(command_lin, shell=True, stdout=subprocess.PIPE) != True):

"os.system(command_lin)" mueste reichen

auserdem willst du doch die leute, die windows 64 bit benutzen (Gott segne sie...) nicht im stich lassen

gruesse
costi

[/quote]
cp != mv
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Mittwoch 27. Dezember 2006, 09:24

Costi hat geschrieben:"os.system(command_lin)" mueste reichen

Hi costi!

``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.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Mittwoch 27. Dezember 2006, 09:25

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.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: blutiger anfänger in python sucht hilfe :)

Beitragvon gerold » Mittwoch 27. Dezember 2006, 09:48

Hi err0r!

Super, dass du dich diesem Thema angenommen hast! :D

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()

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 27. Dezember 2006, 12:26

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: Kebap