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. 초간단
    No such file 뜨는거
    htdocs폴더-data폴더-(CSS,HTML,JavaScript파일)
    htdocs폴더-syntax폴더-(index.py파일, 1.html, 2.html, 3.html 파일)
    이런식 파일들이 위치해 있다면,

    index.py파일에서 경로 'data/' 를,
    '../data/' 로 바꿔주시면 되요.
  2. 도라도라
    Codeanywhere로 하시는 분들은 /home/cabox/workspace/temp/data/ 라고 하시면 정상적으로 실행됩니다.
  3. 캬캬갱스
    data 폴더를 syntax 폴더 밑으로 했는데요 화면이 안나와요 index.py 페이지는 뜨구요 Hello,web 까지는 됐구요
    data폴더 안에 HTML.txt, CSS,txt, JavaScript.txt 파일만들었구요 내용도 같게 했는데요 ㅠㅠ 화면이 흰색창 그래로 입니다 ㅠㅠ
  4. 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 자세히 보기