2013-03-06 2 views
2

해결 방법 : Solution ------------------------------ ------------------------------------Python 내에서 PHP 스크립트 실행 - Python에서 PHP로 값 전달

나는 getimagesize() 함수를 실행하고 싶습니다. 파이썬 스크립트의 PHP 표준 라이브러리. 이 함수는 Python에서 이미지 경로를 전달해야합니다.

파이썬에서 PHP 스크립트를 실행하는 방법을 알고 있지만 파이썬에서 인수를 전달하는 방법을 알아 내지 못하고 결과를 파이썬에 다시 가져옵니다. 여기

내가 파이썬 스크립트에있는 것입니다 :

여기
def php_script_runner(script_path): 
    p = subprocess.Popen(['php', script_path], stdout=subprocess.PIPE) 
    result = p.communicate()[0] 
    return result 

내가 (나는 그것을에 인수를 전달하는 방법을 잘 모르겠습니다) PHP 파일에있는 것입니다 :

<?php getimagesize() ?>

'get_image_size.php'에 인수를 전달하고 추가 처리를 위해 결과를 파이썬으로 반환하겠습니까?

다른 맞춤 PHP 함수에 대해이 아이디어를 구현하고 싶습니다. 이 질문의 주요 목표는 이미지의 크기를 찾는 것뿐만 아니라 미래에 PHP를 많이 사용하는 다른 기능에이 기능을 사용할 수 있도록하는 것입니다.

  1. 방법의 출력을 구문 분석하는 방법 파이썬
  2. 에서 PHP 스크립트에 agrument를 보내는 방법을
  3. 파이썬
  4. 에서 PHP 스크립트를 호출 :

    이의 주요 목표는 결정하는 것입니다 PHP 스크립트를 다시 파이썬으로 바꾸기

+2

http://www.php.net/manual/en/reserved.variables.argv.php 화재가 발생하는 대신 엄청난 오버 헤드가 아닌 파이썬 라이브러리가 있는지 확인하는 것이 좋습니다. 이 한 가지 일을하기 위해 외부 PHP 프로세스를 작성하십시오. –

+0

@MarcB 아래 코멘트에 이미 설명되어 있습니다. – KamilS

+0

가능한 [표준 파이썬 클래스를 사용하여 이미지 크기를 얻는 방법 (외부 라이브러리를 사용하지 않고)?] (http://stackoverflow.com/questions/8032642/how-to-obtain-image-size-using-standard-python -class-without-using-external-lib) –

답변

2

: 파이썬 : 어떤 이유로이 "/"이 경로에 오류가 발생하기 때문에

import subprocess 
import json 
import sys 
import os 

def php(script_path, argument): 
    p = subprocess.Popen(['php', script_path, argument], stdout=subprocess.PIPE) 
    result = p.communicate()[0] 
    return result 

image_dimensions_json =str(php("get_image_size.php", image_location_relative[1:])) 
dic = json.loads(image_dimensions_json) 
print str(dic["0"]) + "|" + str(dic["1"]) 

[1:]에 대한 이유입니다. 문제 해결을 위해 문제를 해결했습니다.

PHP :

<?php 

echo(json_encode(getimagesize($argv[1]))); 

?> 

echo 또는 print_r 작동합니다. 파이썬에는 표준 라이브러리에 내장 된 json 디코더가 있으므로 배열을 JSON으로 쉽게 변환 할 수 있습니다.

희망은 사람들을 돕습니다. 나는 더 큰 PHP 함수를 구현하기 위해이 컨셉을 사용할 계획이다.

+0

이 기능은 다른 기능에 매우 적합하며 출력을 구문 분석하고 PHP 프레임 워크에 통합 할 수 있도록 쉽게 수정할 수 있습니다. – KamilS

2

나는 어디에서나 파이썬 결과를 JSON (또는 XML) 객체로 반향시키고 PHP 스크립트로 정보를 다시 읽는다. 가능하다면이 두 언어를 두 개의 개별 웹 페이지로 분리하고 심지어 파이썬이 GET 스타일 쿼리를 통해 데이터를 API, 즉 API 스타일로 반환하는 것이 좋습니다.

+2

또는 파이썬이 비슷한 것을 가지고 있는지 확인해보십시오. (거의 확실합니다), PHP를 실행 시켜야만하는 오버 헤드가 없어서 파이썬을 이미 할 수있었습니다. –

+0

웹 페이지에서이 스크립트를 실행하지 않습니다. 저는 파이썬에 익숙하지만 이미지 크기를 얻기위한 내장 모듈을 가지고 있지 않습니다. 필자는 PHP가 훌륭한 기능을 가지고 있다는 것을 알고 있습니다. 왜 PHP를 사용하지 않을까요? (필자가 작성한 다른 PHP 함수 중 일부는 Python에 통합하고자합니다.) – KamilS

+0

@MarcB : 좋은 답변입니다. 또 만나 네요! –

3

Python 이미지 라이브러리, PIL 사용시 문제점은 무엇입니까?

from PIL import Image 
im=Image.open(filepath) 
print im.size # (height,width) tuple 

PHP 스크립트를 호출하여 이미지 크기를 가져 오는 것은 잘못된 것입니다. 나는 PHP가 파이썬보다 뛰어나다 고 생각할 수 없다. 두 런타임의 인스턴스를 실행하는 것을 정당화한다. :)

내 충고 : 한 번에 한 언어 씩 고수하고 파이썬의 표준 라이브러리를 배운다.) PHP로 할 수 있다면 파이썬에서 뭔가를하는 데 문제가 있어서는 안됩니다. 이 일이 해결

+0

여러 번 말했듯이, 이것은 단지 디딤돌 일뿐입니다. 나는 PIL을 잘 알고 있으며 표준 라이브러리를 알고 있으며 PIL은 그 부분이 아닙니다. PHP를 호출하는 이유가 있습니다. – KamilS

+2

글쎄, 파이썬에서 이미지 크기를 얻을 수있는 방법이 없다고 말했다. 그래서 PIL을 제안했습니다. 죄송합니다. –

+0

입력 해 주셔서 감사합니다. 최신 편집으로 더 명확하게했습니다. – KamilS