WEB2 - Python

활용 - 파일 기능을 이용해 본문 구현

수업소개

본문의 내용을 별도의 파일로 저장하고, 파이썬의 파일 제어 기능을 이용해서 파일을 읽어서 본문의 내용을 자동으로 생성하는 기능을 구현해봅니다. 

 

 

강의

 

 

소스코드

변경사항

#!/usr/local/bin/python3
print("Content-Type: text/html")
print()
import cgi
form = cgi.FieldStorage()
if 'id' in form:
    pageId = form["id"].value
    description = open('data/'+pageId, 'r').read()
else:
    pageId = 'Welcome'
    description = 'Hello, web'
print('''<!doctype html>
<html>
<head>
  <title>WEB1 - Welcome</title>
  <meta charset="utf-8">
</head>
<body>
  <h1><a href="index.py">WEB</a></h1>
  <ol>
    <li><a href="index.py?id=HTML">HTML</a></li>
    <li><a href="index.py?id=CSS">CSS</a></li>
    <li><a href="index.py?id=JavaScript">JavaScript</a></li>
    <li><a href="index.py?id=Python">Python</a></li>
  </ol>
  <h2>{title}</h2>
  <p>{desc}</p>
</body>
</html>
'''.format(title=pageId, desc=description))

 

댓글

댓글 본문
작성자
비밀번호
  1. guattari92
    저 data 폴더를 htdocs 폴더에서 syntax 폴더 밑으로 옮겼더니 실행이 잘되네요.
    동영상에서는 htdocs 폴더 밑에서 불러와도 바로 작동이 잘 되던데, 왜 index.py 와 같은 폴더 내에 있을 때만 불러와지는 걸까요?
    대화보기
    • 유튜브 재생목록에 해당파일이 누락되어있습니다 확인부탁드립니다
    • guattari92
      data 폴더 및에 HTML 파일을 만들었는데,
      에러로그에는 FileNotFoundError: [Errno 2] No such file or directory: 'data/HTML'
      이런 메시지가 계속 뜨네요. 어떻게 해야할까요?
    • 굿날
      자바스크립 페이지의 (/ˈdʒɑːvəˌskrɪpt/[6]) 이 부분 때문에 페이지 로딩이 되지 않습니다.
      (/ˈdʒɑːvəˌskrɪpt/[6]) 이걸 지우면 정상 작동 하고요.
      에러 로그는 이거입니다.
      File "/home/cabox/workspace/index.py", line 8, in <module>
      description = open('data/' + pageId, 'r').read()
      File "/usr/lib/python3.4/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0]
      UnicodeDecodeError: 'ascii' codec can't decode byte 0xcb in position 13: ordinal not in range(128)
      어떻게 해결 가능한가요?
    • egoing
      오호 저도 몰랐는데 고맙습니다!
      대화보기
      • 디디
        윈도우에서 한글이 깨져서 나온다면,
        sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
        이 라인을 추가해보세요.

        아래 블로그에서 자세하게 나와있습니다.
        https://blog.ayukawa.kr......342
        대화보기
        • ym kim
          수업을 따라가면서 나만의 웹페이지를 만들어보고 있습니다.
          근데 한글만 넣으면 자꾸 오류가 나는데, 해결 방법을 여쭈어보아도 될지요?
          (구글링을 해보면
          #-*- coding:utf-8 -*-를 삽입하라는 등 몇가지 방법을 따라해 보았지만 소용없었습니다 ㅠ
          참고로 MacOS 사용자입니다,)

          늘 좋은 강의 감사드립니다!!
        • PassionOfStudy
          2018-03-28 - 3일차_다 번째 수강완료!

          이번 수업은 이해가 잘 되지않은 부분이 있어서 반복해서 들었습니다.
          궁금해서 여쭤보겠습니다.
          Q1)
          python의 open('data/'+pageId, 'r').read()에서 .read()라는 것은 열린파일의 텍스트를 읽어주는
          라이브러리 함수같은 것인가요?
          Q2)
          https://docs.python.org......tml 사이트에서 참고하는데요
          open후에 close()함수를 써서 닫아주는 것을 권장하던데요
          python에서 메모리낭비를 줄이기위해 자체적으로 닫아주지만 권장한다는것은 문제도 있다는 것인가요?
        • 안드레아신
          혼자서 이리저리 다시한번 시도 해본결과 ...
          JavaScript파일 생성해서 수업대로 "java is lorem~~ " 혹은 다른 문장 집어넣으면 무리없이 실행되는데,

          JavaScript 설명 wiki 영문판 첫문단을 가져와서 붙여넣으면 에러가 뜨네요 ..

          어차피 data폴더의 JavaScript파일은 텍스트형식인데
          왜 가져오는게 다르다고 실행이 안되는지 궁금합니다^^

          참고.. )
          발췌한 첫문단 위치 : https://en.wikipedia.org......ipt
          대화보기
          • 안드레아신
            수업 잘 듣고 있습니다.
            강의대로 실행은 문제없이 이루어지고 있는데
            한군데서 오류가 뜨는데 해결방법을 알고싶어서 질문드려요~

            HTML/ CSS는 클릭하면 내용이 잘 뜨는데
            JavaScript를 클릭하면 아무것도 안나오면서 에러가 발생합니다.
            error.log를 보니 CSS항목에 잘못(?)이 있는걸로 해석해서
            CSS대신 python으로 똑같이 삽입해도
            위 두개 항목은 변함없이 실행되는데 "JavaScript"만 누르면 아무것도 안뜨네요 ㅠㅠ

            뭐가 문제인지 알고 싶습니다^^

            error.log에 나온내용 (앞문장 생략)
            [client 127.0.0.1:55652] AH01215: Traceback (most recent call last):\r: D:/Bitnami/wampstack-7.1.15-0/apache2/htdocs/index.py, referer: http://127.0.0.1......hon

            [client 127.0.0.1:55652] AH01215: File "D:/Bitnami/wampstack-7.1.15-0/apache2/htdocs/index.py", line 8, in <module>\r: D:/Bitnami/wampstack-7.1.15-0/apache2/htdocs/index.py, referer: http://127.0.0.1......hon

            [client 127.0.0.1:55652] AH01215: description = open('data/'+pageId, 'r').read()\r: D:/Bitnami/wampstack-7.1.15-0/apache2/htdocs/index.py, referer: http://127.0.0.1......hon

            [client 127.0.0.1:55652] AH01215: UnicodeDecodeError: 'cp949' codec can't decode byte 0xcb in position 15: illegal multibyte sequence\r: D:/Bitnami/wampstack-7.1.15-0/apache2/htdocs/index.py, referer: http://127.0.0.1......hon
          • 폭스킴
            문법 다 배우고 활용을 배우는게 일반적인데, 이렇게 문법과 활용을 병행해서 배우니까 더 잘 와닿네요~ 단, 정말 초심자에게는 좀 어려울 듯 합니다만, 이 수업 구성에 감탄을 보냅니다~ 좋아요를 True 박은 반복문으로 돌려서 드리고 싶어요~ ^^
          버전 관리
          egoing
          현재 버전
          선택 버전
          graphittie 자세히 보기