2010-07-03 5 views
2

나는 나 자신에게 파이썬과 CGI 스크립트를 가르치고 있었고, 나는 당신의 기본 스크립트 내가 큰 HTML 파일이있는 경우인쇄 HTML은

#!/usr/local/bin/python 
import cgi 
print "Content-type: text/html" 
print 
print "<HTML>" 
print "<BODY>" 
print "HELLO WORLD!" 
print "</BODY>" 
print "</HTML>" 

처럼 내 질문은, 내가 표시 할되어 보이는 것을 알고있다 파이썬 (코드 줄과 줄이 있고 그 안에 JS가있다.) 나는 각 줄 앞에 수동으로 'print'를 추가하고 "\"등으로 바꾸어야합니까? 아니면 나를 위해 그것을 변환 할 수있는 방법이나 스크립트가 무엇입니까?

감사합니다. 그 큰 html 파일이 'foo.html' (예를 들어)라고하여 CGI 스크립트의 현재 디렉토리에 거주하는 경우

답변

8

파이썬은 여러 줄의 문자열을 지원하므로 텍스트를 하나의 커다란 글자로 인쇄 할 수 있습니다.

print '''<html> 
<head><title>My first Python CGI app</title></head> 
<body> 
<p>Hello, 'world'!</p> 
</body> 
</html>''' 

그들은 방법 (.upper(), .translate() 등) 및 포맷 (%)뿐만 아니라 원시 모드 (r 프리픽스) 및 유니 u 프리픽스를 포함한 모든 문자열 연산을 지원한다.

+0

그런 HTML을 복사하여 붙여 넣을 수 있습니까? 각각을 추가해야하지 않습니까? " – Parker

+0

여러 줄로 된 문자열을 열었던 동일한 삼중 쿼트 시퀀스 만 닫을 수 있습니다. –

+0

이그나시오, 불필요한"인쇄 "태그와 따옴표를 저장했습니다. 감사합니다! – Parker

9

, 다음 스크립트의 몸으로 필요로하는 모든입니다

print "Content-type: text/html" 
print 
with open('foo.html') as f: 
    print f.read() 

당신이 함께 붙어있는 경우 Python 2.5의 경우 모듈 본체의 시작 부분에 from __future__ import with_statement을 추가하십시오. 당신이 더 오래된 파이썬 함께 붙어 있다면, 당신은 인 cgi 모듈의 기능을 전혀 사용하지 않을 때 당신이 import cgi하지 않아도

print open('foo.html').read() 

참고로 마지막 두 줄을 변경 이 예문과이 답안 모두에

+0

감사합니다. Alex, 많이 감사합니다! – Parker

+0

그래서 foo.html이 스크립트가 있던 곳이면 cgi-bin에 있어야합니까? – Parker

+0

@Parker : 예를 들어, 예. 그러나 다른 곳에서 파일을 열 때 경로를 지정할 수 있습니다. –

0

내가 처음으로 데코레이터를 실험 할 때, 나는 HTML 머리와 body 태그 보일러 플레이트 물건을 처리하기 위해 this little CGI decorator을 작성했다. 그냥 쓸 수 있도록 : 반환라고

@CGImethod(title="Hello with Decorator") 
def say_hello(): 
    print '<h1>Hello from CGI-Land</h1>' 

: 다음 say_hello는 HTTP 서버의 do_GET 또는 do_POST 방법에서

Content-Type: text/html 

<HTML> 
<HEAD><TITLE>Hello with Decorator</TITLE></HEAD> 
<BODY> 
<h1>Hello from CGI-Land</h1> 

</BODY></HTML> 

를 호출 할 수 있습니다.