2012-01-24 14 views
18

Z jakiegoś powodu muszę uruchomić skrypt php, aby uzyskać obraz z Pythona. Ponieważ skrypt php jest bardzo duży i nie jest mój, zajmie mi kilka dni, aby znaleźć odpowiedni algorytm i przetłumaczyć go na pythona.Wykonywanie kodu php w Pythonie

Zastanawiam się, czy istnieje sposób na uruchomienie skryptu php z kilkoma parametrami, który zwraca obraz w pythonie.

Odpowiedz

32

Przykładowy kod:

import subprocess 

# if the script don't need output. 
subprocess.call("php /path/to/your/script.php") 

# if you want output 
proc = subprocess.Popen("php /path/to/your/script.php", shell=True, stdout=subprocess.PIPE) 
script_response = proc.stdout.read() 
+2

To jest kod wklejony z http://mail.python.org/pipermail/tutor/2009-October/071973.html – Alvin

+7

jest niepoprawny. Pierwsze połączenie nie działa w systemach POSIX. Zamiast tego użyj 'subprocess.call ([" php ","/path /to/your/script.php "])'. Użyj 'script_response = subprocess.check_output ([" php ","/path /to/your/script.php "])' zamiast drugiego przykładu. – jfs

+0

jeśli argument 'shell' jest ustawiony na' True', wówczas użycie łańcucha zamiast listy jest ok. – Valen

5

Możesz po prostu uruchomić plik php z Pythona.

Edit: przykład dla Pythona 3.5 i wyższe przy subprocess.run:

import subprocess 

result = subprocess.run(
    ['php', 'image.php'], # program and arguments 
    stdout=subprocess.PIPE, # capture stdout 
    check=True    # raise exception if program fails 
) 
print(result.stdout)   # result.stdout contains a byte-string 
+0

Czy możesz podać dowolny przykład? – jiahao

+0

http://mail.python.org/pipermail/tutor/2009-October/071973.html – Sjoerd

+0

Zakładając, że skrypt php może zostać wywołany z wiersza poleceń i przyjmuje argument wiersza poleceń, aby opisać, co zrobić z obrazem, możesz użyj wbudowanego pakietu podprocesów. importuj podprocesy subprocess.call (["/ path/to/php", "/ path /to/php/script.php", "argument"]]) –

2

Bądź otoki wokół skryptu PHP, który:

  • wykonuje rzeczy (jeśli dobrze rozumiem, to obraz tworzenie)
  • przekierowuje (301 Przeniesiony stałe) do obrazu wynikowego,
  • (również , obraz powinien zostać oczyszczony pewnego dnia).

Więc można odnieść się do tej usługi (skrypt PHP) z prostego żądania HTTP, z dowolnego miejsca, można go przetestować w przeglądarce, należy od Pythona PRG, to trzeba po prostu pobrać obraz zwykły sposób .

Ponadto, jeśli masz taki samodzielny podsystem, nie czuj się źle z jego użyciem z innym językiem/techniką. Ma kilka zalet, np. możesz zainstalować tę usługę na innym hoście.

Zalecane lektury: Service-Oriented Architecture na Wikipedii.

+0

To naprawdę dobry pomysł! Myślę, że to rozwiąże mój problem. Wielkie dzięki. – jiahao

4

Można użyć php.py. Umożliwiłoby to wykonanie kodu php w pythonie, tak jak w tym przykładzie (pobranym z here):

php = PHP("require '../code/private/common.php';") 
code = """for ($i = 1; $i <= 10; $i++) { echo "$i\n"; }""" 
print php.get_raw(code) 
+0

Hi. Dzięki za pomoc. Jeśli sprawdzisz kod źródłowy tego programu, zobaczysz, że muszę ręcznie wprowadzić kod php. Ponieważ jest on również powiązany z niektórymi plikami .inc, nie jest tak dobrą opcją. Ale i tak dzięki. – jiahao

Powiązane problemy