PHP-Code in Python

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.
Gree

Moin.

Gibt es eigentlich eine Möglichkeit php-code in python auszuführen, oder PHP-Code in Python-Code zu übersetzen?

Vielen Dank.
joe

Hallo!
Gree hat geschrieben:Gibt es eigentlich eine Möglichkeit php-code in python auszuführen,
Nein, im python-interpreter läuft nur python-code.
Gree hat geschrieben:oder PHP-Code in Python-Code zu übersetzen?
Ich weiß nicht, was php kann, aber python wird sicherlich dem in nichts nachstehen. Sollte also mit ausreichend php- und python-wissen kein problem sein.

Du solltest vielleicht konkreter werden
joe
BlackJack

joe hat geschrieben:Hallo!
Gree hat geschrieben:Gibt es eigentlich eine Möglichkeit php-code in python auszuführen,
Nein, im python-interpreter läuft nur python-code.
Oder auch Java *.class Dateien. Wenn man PHP in Java-classes übersetzen kann, dann wäre das ein möglicher Weg. :wink:
XT@ngel
User
Beiträge: 255
Registriert: Dienstag 6. August 2002, 14:36
Kontaktdaten:

Servus,
ich kenn auch nur PiP. Und das funktioniert genau andersrum - also Python in PHP.

MfG
Andreas
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Es müßte doch gehen, wenn man den PHP Interpreter mit subprocess aufruft und ihm Skripte zum verarbeiten herranreicht...
Zumindest würde das mit dem Python Interpreter gehen ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Gree

Ja, so hab ich mir das auch ertmal gedacht.
Kann ja sein, aber schöner fände ich wenn es sowas gäbe wie dieses PiP, nur andersherum.


Danke
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Aber mal eine Gegenfrage... Warum braucht man sowas???

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Gree

*pfeif*
Naja, ich weiß nicht, ob das in einem Python-Forum so gut ankommt, aber wir benutzen z.Zt. in der Schule Python, und so konnte ich feststellen, dass mir python nicht so sehr zusagt...
PHP dagegen find ich super, und so kam ich auf die ausgefallene Idee es könnte doch ein Programm zum Übersetzen von PHP-Scripts in Python geben.
Naja. :?
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Also dann hast du entweder noch nicht viel mit PHP gemacht oder kennst Python nicht richtig ,-)
Kann natürlich auch sein, dass es die natürlich Abneigung gegen Programmiersprachen, welche man in der Schule lernt ist :D

Aber mit Python ist dein Code kürzer und wartbarer als mit PHP.
Der einzige Nachteil gegenüber PHP ist IMHO, dass es bei den Webspace-Anbietern weitaus weniger verbreitet ist.

Und 2 Sprachen mischen ist nur dann eine Idee, wenn man das braucht, weil man unterschiedlich Systemnah arbeiten will (z.B. Python & C oder C++ & Assembler).
Such die eine (ich schlage vor Pyhton :roll:) aus und machs komplett in der Sprache, auch wenn du da viel neu schreiben musst, wirst du mittelfristig weniger arbeit damit haben, als wenn du versuchst die beiden zusammenzubraten.
ProgChild
User
Beiträge: 210
Registriert: Samstag 9. April 2005, 10:58
Kontaktdaten:

Gree hat geschrieben:*pfeif*
Naja, ich weiß nicht, ob das in einem Python-Forum so gut ankommt, aber wir benutzen z.Zt. in der Schule Python, und so konnte ich feststellen, dass mir python nicht so sehr zusagt...
PHP dagegen find ich super, und so kam ich auf die ausgefallene Idee es könnte doch ein Programm zum Übersetzen von PHP-Scripts in Python geben.
Naja. :?
Was machst du denn, wenn ihr nen Test schreibt? Schreibst du dann PHP da hin und sagst, du würdest das konvertieren lassen?

[persöhnliche_meinung]Lehrn lieber Python. Is eh besser :wink: [/persöhnliche_meinung]
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Gree hat geschrieben:so konnte ich feststellen, dass mir python nicht so sehr zusagt... PHP dagegen find ich super
Warum? Das würde mich echt mal interressieren, was du an PHP besser findest...

Dazu passend, aus der FAQ ( http://www.pythonwiki.de/PythonDeForum/ ... 6d6a7ef550 ):
Welche Vor- und Nachteile hat Python?

Pro

* OpenSource / FreieSoftware! (ansich schon einige Vorteile gegenüber ClosedSource Programmierspachen und Implementationen)
* klare, schnell erlernbare Sprachsyntax, somit schnelle Ergebnisse
* gezwungenermaßen gut lesbarer Code
* Module für alle möglichen Probleme vorhanden
* eine Sprache für alle Plattformen
* eine Sprache für Web und lokale GUI-Lösungen
* eine Sprache für kleine, schnell erstellte Skript-Lösungen für Kommandozeile, aber auch komplexe grafische Programme möglich
* aussagekräftige und gezielte Fehlermeldungen
* [WWW] hier eine ausführlichere Liste der Vorteile von Python

Contra

* bedingt geeignet für performancelastige Probleme (auslagern in C möglich)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Gree

Also ersteinmal ist es mein neophober Teil, der sich über die Abwesenheit von geschweiften Klammern erschreckt zeigt, aber ok, das wird der neophile kompensierern können.
Dann diese eigenartige (nach PHP irgendwie unnötige) unterscheidung in dictionarys und Listen. Dabei ist doch schon die for-schleife in Python so super aufgebaut, das man sich eine foreach völlig sparen kann.

Und dann mag mich auch etwas gestört haben, dass ich es einfach nicht geschafft hab eine dokumentation zu finden, in der für alle module (oder jedes einzelne Modul) alle funktionen/methoden samt syntax und möglicherweise auch noch beispielen, aufgeführt sind. Zu sort() konnte ich in einigen Dokumentationen beschreibungen zum sortierern von listen finden, aber hab nicht herausgefunden, wie man dictionarys nach werten sortiert (in PHP kein geringstes Problem), und jedesmal die netten Leute in Foren zu nerven...

Und wieso kann ich einem Array text (len(text) == 3 && text == "mau" soll mal wahr sein, oh, sorry heißt ja leider 'and' statt '&&') nicht einfach mit text[3] = s ein 's' anhängen... Aber ok, das hat sicher ganz logische, sich auf konsequents berufene Gründe... klappt ja auch mit append().

Um die Tests mach ich mir mal nicht so viel sorgen, in der Schule machen wir das sowieso auf so bescheidenem Level, dass das sicher nicht das Problem sein sollte.

Na dann schonmal danke für das mich-in-die-richtige-Richtung-lenken.

Gree
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Gree hat geschrieben:Dann diese eigenartige (nach PHP irgendwie unnötige) unterscheidung in dictionarys und Listen. Dabei ist doch schon die for-schleife in Python so super aufgebaut, das man sich eine foreach völlig sparen kann.
Diese Unterscheidung ist alles andere als sinnlos.
Ich weiß nicht genau, wie PHP das implementiert, aber Listen und Hashes (=Dictionaries) sind total unterschiedliche Datenstrukturen, die ganz Unterschiedliches Laufzeitverhalten haben. Ich nehme mal an, in PHP sind einfach alles Hashes.
Ich kann aber auf das n-te Element in einer Liste (angenommen sie ist entsprechend implementiert) in konstanter Zeit zugreifen, während das bei Hashes nur angenähert der Fall ist.

Listen verbrauchen ausserdem weniger Speicher, weil die Schlüssel nicht mitgespeichert werden müssen, da der Schlüssel die Position in der Liste ist.
Es ist einfach konzeptionell was anderes!
Und dann mag mich auch etwas gestört haben, dass ich es einfach nicht geschafft hab eine dokumentation zu finden, in der für alle module (oder jedes einzelne Modul) alle funktionen/methoden samt syntax und möglicherweise auch noch beispielen, aufgeführt sind.
Also Beispiele gibts nicht überall zu, aber wenn du hier mal in die FAQ guckst (http://www.pythonwiki.de/PythonDeForum/Faq)
oder einfach mal "pydoc modulname" eingibst (unter Linux, k.A. wies unter Windows ist), müsstest du schon fündig werden.
Zu sort() konnte ich in einigen Dokumentationen beschreibungen zum sortierern von listen finden, aber hab nicht herausgefunden, wie man dictionarys nach werten sortiert (in PHP kein geringstes Problem), und jedesmal die netten Leute in Foren zu nerven...
Dann hast du die Datenstruktur Hash nicht verstanden.
Ein Hash (also Dictionary) hat keine festgelegte oder festlegbare Reihenfolge der Einträge, hier zu erklären, wie genau ein Hash funktioniert würde ein bisschen weit führen, aber evtl. hilft google dir da weiter.
Und wieso kann ich einem Array text (len(text) == 3 && text == "mau" soll mal wahr sein, oh, sorry heißt ja leider 'and' statt '&&') nicht einfach mit text[3] = s ein 's' anhängen...
Das liegt wieder daran, dass eine Liste kein Hash ist.
Die Liste hat in dem Moment 3 Elemente.

Code: Alles auswählen

text[3]
veranlasst den Interpreter, dass 4. Element der Liste aufzurufen.
(Informatiker fangen ja bei 0 mit zählen an, also 0 wäre das erste Element), welches zu dem Zeitpunkt ja nicht existiert.
Bei einem Hash wäre das z.B. anders.
Eine Liste ist so gebaut, dass es keine "Lücken" geben kann.
Na dann schonmal danke für das mich-in-die-richtige-Richtung-lenken.

Gree
Kein Problem, ich hoffe, ich konnte helfen :-)
Gree

Ja, Danke erstmal.

Arrays:
Ja, gut, dann ist das halt anders...
Hat ja sicher Vorteile...

Dokumentation:
pydoc werd ich mal ausprobieren, Windows ist mir eigentlich recht egal.
Hoffentlich find ich da dann irgendwo erklährungen zur sort()-Syntax.
Schaun wa ma.
Danke für die, wenn auch nicht so angenehm für idioten wie bei der PHP-Doc integrierten, Beispiele. Werd mal ein bissl lesen.

dictionary-Datenstruktur:
In PHP liegen die auch nur so rum: Key=>Wert, ohne eine zusätzliche indexierung, aber trotzdem kann man sie sortierern, und es gibt auch schicke Arrayzeiger, mit denen man von Element zu Element wandern kann. Vielleicht könnte man das so etwa mit n Zeilen mal (2 Spalten + Index) vergleichen:

Index | Key | Wert
1 | quasikey1 | bel-wert
2 | quasikey2 | bel-wert
3 | quasikey3 | bel-wert
4 | quasikey4 | bel-wert

Also, dass man jedem (eindeutigen) Index 1. ([n][0]) einen eindeutigen Wert zuweist, der als Key herhalten soll, und dann 2. ([n][1]) den eigentlichen Wert.

Dann braucht man nur noch eine Funktion, der man den Quasi-Key übergibt, und die dann den richtigen zurückliefert.

Vielleicht mach ichs so.

append:
Ich hatte in meinem Beispiel schon vor aus "mau" "maus" zu machen, also ein Element anzuhängen.
ok, nehm ich das halt so hin.

Helfen:
Auf jeden Fall. Danke.
Mal sehen, ob ich mir selber aus ein paar Funktionen und Listen PHP-Typische Arrays basteln kann. ;-)
Find ich irgendwie Vorteilhaft.
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Zu Maus:
Strings an sich sind in Python immutabel.
Soll heissen, man kann sie nicht verändern.
Das macht aber auch Sin, wenn man sich überlegt, dass man auch Zahlen nicht verändern kann (Eine 5 bleibt eine 5, und wenn ich eins drauf addiere, ist 5 immernoch 5, aber das Ergebnis ist ein neues Objekt, die 6).

Vielleich ist, was du willst folgendes:

Code: Alles auswählen

% python
Python 2.3.5 (#2, Jun 19 2005, 13:28:00) 
[GCC 3.3.6 (Debian 1:3.3.6-6)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> string1 = "mau"
>>> print string1 + "s"
maus
>>> 
edit: Zu den hash-listen: Was genau hast du denn damit vor?
Was ich meine: Wenn du ein bisschen genauer angeben kannst, über welche Methode du in welchen Fällen auf deine Elemente zugreifen willst, kann ich dir vielleicht helfen, sowas zu konstruieren...
BlackJack

Ich weiss auch nicht so recht was Du mit sortierten Dictionaries genau machen willst. Wenn Du nach Schlüssel sortiert die Schlüssel und Werte ausgeben oder sonstwie bearbeiten willst, dann kannst Du das z.B. so machen:

Code: Alles auswählen

for key, value in sorted(dictionary.items()):
    print key, value
Zu der Dokumentationsfrage: Die Doku von Python beschreibt eigentlich alle Module die mitgeliefert werden. Beispiele sind nicht überall vorhanden, aber man kann auch im Interaktiven Interpreter mal schnell was ausprobieren wenn man sich nicht ganz sicher ist.

Das ``and`` statt ``&&`` finde ich etwas lesbarer, weil das Wort `and` eine bekannte Bedeutung hat, während ``&&`` nicht ganz so selbsterklärend ist.
gree
User
Beiträge: 9
Registriert: Samstag 27. August 2005, 16:56
Kontaktdaten:

And:
In PHP geht, soweit ich weiß, beides.

Dictionarys:
Ich würde gerne nach den Werten sortieren, das hab ich jetzt so genacht:

Code: Alles auswählen

while len(array) > 0:
    biggest = array.keys()[0]
    for k in array:
        if array[k] > array[biggest]:
            biggest = k
    print "Letter: %s" %biggest, "- Anz: %i" %array[biggest], "%"
    del array[biggest]
array ist mein dictionary, in dem jedem Buchstaben von 'a' bis 'z' die Anzahl seines Auftretens im Text zugeordnet ist.
Funzt jetzt auch.
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Schau dir nochmal das Beispiel von Blackjack an, das ganze geht viel einfacher:

Code: Alles auswählen

l = array.items()
l.sort()
for buchstabe, anzahl in l:
    print "Letter",buchstabe,"Anzahl",anzahl
    # oder print "Letter %s - Anzahl %i" % (buchstabe,anzahl)
Auf sorted hab ich verzichtet, da es erst bei Python 2.4 dabei ist.

Edit: Ah, du willst nach der Anzahl (also dem zweiten Element in dem Tupel (key,value)) sortieren. In diesem Falle l.sort() durch folgendes ersetzen:

Code: Alles auswählen

l.sort(lambda a,b:cmp(a[1],b[1]))
Wenn du mit dem größten Wert anfangen willst, kannst du
  1. nach dem sort ein l.reverse() ausführen, oder
  2. statt cmp schreiben: -cmp
BlackJack

Oder den `reverse` Parameter benutzen:

Code: Alles auswählen

from operator import itemgetter

histogram = {'a': 10, 'b': 5, 'c': 100}

for item in sorted(histogram.items(), key=itemgetter(1), reverse=True):
    print 'Letter %r - count: %d' % item
gree
User
Beiträge: 9
Registriert: Samstag 27. August 2005, 16:56
Kontaktdaten:

Danke!
Das Beispiel oben hab ich schonmal gesehen, konnte aber mir nichterklähren, was dieses lambda a,b:cmp(a[1],b[1]) zu bedeuten hat, das sort() übergeben wird... Ich werds mal ausprobieren, aber was bedeutet das? Lambda ist doch ein Buchstabe.
Ich benutze ungern Dinge, die ich nicht verstehe, ne, andersrum: Ich verstehe gerne Dinge, die ich benutze.
Antworten