2011-04-12 5 views
1
#! /usr/bin/env python 

import htmlSplitter, htmlGlue 

headerContent, mainContent, sideSetup, sideContent, footerContent = htmlSplitter.split("../htdocs/bcc/register.html") 


mainContent = "<h1>This is another Test</h1>" 
sideContent = "<h2>Jonathan's here!</h2>" 


htmlDoc = htmlGlue.glue(headerContent, mainContent, sideSetup, sideContent, footerContent) 

f = open("../bcc/doctest.html", "w") 
f.write(htmlDoc) 
f.close() 

print("Location:../bcc/doctest.html") 
print 

이 스크립트는 명령 줄에서 실행할 때 완벽하게 작동합니다. 그러나 CGI 스크립트로 실행할 때 "스크립트 헤더의 조기 종료"오류가 발생합니다. 나는 디버깅을했고, "doctest.html"을 열어서 쓰는 부분을 주석 처리하면된다. (그래서 나는 포함 된 다른 두 모듈이 문제를 일으키지 않는다는 것을 안다.) 코드의 일부가 CGI 스크립트로 작동하지 않는 이유는 무엇입니까? 대신 내가 대신 사용해야하는 것이 있습니까?f = open()/CGI 스크립트가 아닌 [명령 줄에서 작동] [python]

참고 : 'doctest.html'에서 chmod a + rw를 수행하여 스크립트에 편집 권한이 있는지 확인했습니다.

감사합니다.

+1

오류 로그에 무엇을 말 했나요? –

+0

'cgitb '를 사용하여 현재 진행중인 작업을 찾을 수 있습니다. 'import cgitb; DEBUG : cgitb.enable()' – khachik

+0

면 알 수 있습니다. 그건 내가 알고 있어야했던 유용한 도구입니다. 감사! –

답변

0

이 스크립트의 시작 부분에 다음을 추가합니다 (이 그것이 아마도 웹 서버에 의해 실행되는 방식이기 때문에,하지 python yourscript)를 ./yourscript를 사용하여, 그것을내어 쓰려면, 서버에 명령 행을 통해 스크립트를 시작하려고 :

#!/usr/bin/env python 
print 'Content-Type: text/html' 
print 

저는 항상 파이썬 CGI 스크립트에 Content-Type을 선언했습니다. 정중합니다. 무언가는 던져 예외로 스크립트와 잘못된 경우

import cgi 
import cgitb 
cgitb.enable() # allows error tracebacks 

cgitb 당신에게 좋은 웹 기반 역 추적을 표시합니다.

+0

cgitb가 도움이되었습니다. 관계형 링크 오류가 발생했습니다. 이상하게도 open() 파일 이름은 이상한 경로명 (location :) 파일 이름과 같은 경로가 아닙니다. 도움에 감사드립니다! –

0

아마도 복사/붙여 넣기 오류 일 수도 있지만 귀하의 쉬 뱅이 들여 쓰기가되는 것 같습니다.

+0

복사 - 붙여 넣기 오류 일뿐입니다. 그러나 좋은 캐치! 감사. –

관련 문제