Python HTML Profile DB
โดยข้อมูลที่นำมาสร้างเป็น HTML Profile นี้นั้นกำหนดรูปแบบไว้เป็นไฟล์ .txt โดยข้อมูลของแต่ละคนจะใช้ความยาว 1 บรรทัดมีรูปแบบดังนี้
โดย make_html นั้นมี Argument 3 ตัวคือ Maxpage, mi, mData โดย Maxpage คือจำนวนหน้าของ Profile ทั้งหมดซึ่งมีค่าตามความยาวของ List All_Data , mi เป็นเลขใช้สำหรับระบุลำดับที่จะใช้สร้าง HTML Page และ mData เป็น List ของข้อมูลที่จะนำไปใส่ใน HTML Page ที่ได้จากการ split ก่อนหน้านี้นั่นเอง จากนั้นสร้างตัวแปร Linkpage จากนั้นทำการเช็คเงื่อนไขหาก mi เป็นตัวแรกจะไม่ใส่ Link สำหรับ Previous หรือหากเป็นตัวสุดท้ายก็จะไม่ใส่ Next เช่นกันจากนั้นจึงสร้างไฟล์ HTML โดยใช้คำสั่งของ file มาเขียนโค้ด HTML ลงไปโดยดึงข้อมูลจาก mData ไปใส่ระหว่างการเขียนไฟล์ด้วยจากนั้นปิดท้ายด้วยการนำ Linkpage ไปใส่ไว้ล่างสุดของ HTML Code แล้วทำการปิด file จากนั้น print คำว่า Generate HTML Complete ตามด้วยเลขหน้าออกทางหน้าจอ
และ make_html มี Argument 1 ตัวคือ mData ซึ่งเป็นตัวแปรที่เก็บข้อมูลทั้งหมดไว้ จากนั้นเริ่มต้นด้วยการสร้างตัวแปรชื่อ Body แล้ววน loop ตามความยาวของ mData เพื่อเก็บ Code ที่ใช้สร้างลิ้งค์ไปยังไฟล์ HTML ของแต่ละเลขประจำตัวจากนั้นจึงเขียนลงไฟล์ที่ชื่อ index.html แล้วทำการปิดไฟล์ print คำว่า Generate Index HTML Complete ออกทางหน้าจอ
จากโปรแกรมนี้จะเห็นได้ว่าเราสามารถนำข้อมูลจากภายนอกมาใช้เป็นข้อมูลในโปรแกรมของเราและนำไปสร้างเป็นไฟล์ HTML ที่ใช้ในการแสดงผลอีกด้วยโดยการใช้ file นั้นจะเห็นว่า file = open("./DB.txt", "r") ในคำสั่ง open นั้นจะประกอบไปด้วยชื่อไฟล์ และ Mode ซึ่งจากที่ยกตัวอย่างนัั้นจะมีทั้ง "r" และ "w" โดย "r" นั้นจะเป็นโหมดในการอ่านเพียงอย่างเดียวเท่านั้น ส่วน "w" จะเป็นการเขียนไฟล์เท่านั้นหากมีไฟล์ชื่อนี้อยู่แล้วจะลบของเก่าทิ้งแล้วเขียนลงไปใหม่ นอกจากนี้ยังมีอีกโหมดนั่นก็คือ "a" ซึ่งโหมดนี้จะเป็นการเขียนไฟล์เพิ่มต่อจากของเดิม และสุดท้ายโหมด "r+" ซึ่งโหมดนี้สามารถทำได้ทั้งอ่านและเขียนไฟล์ได้เลย
โดยได้ศึกษาการใช้ open จากเว็บ python.org
โดยได้ศึกษาการเขียนโค้ด HTML จากเว็บ w3schools.com
Read more ...
โดยข้อมูลที่นำมาสร้างเป็น HTML Profile นี้นั้นกำหนดรูปแบบไว้เป็นไฟล์ .txt โดยข้อมูลของแต่ละคนจะใช้ความยาว 1 บรรทัดมีรูปแบบดังนี้
StudentID \Name \Surname \Nickname \Birthday \Age \Sex \Religion \Weight \Height \E-mail \Address \Facebook \Phoneตัวอย่างข้อมูลที่ได้เก็บไว้เพื่อใช้สร้าง HTML Profile
StudentID \Name \Surname \Nickname \Birthday \Age \Sex \Religion \Weight \Height \E-mail \Address \Facebook \Phoneในส่วนของ Python Code นั้นเป็นดังนี้
5311564149 \Chawatvish \Worrapoj \best \09.11.1991 \22 \male \Buddhism \92 \185 \bestwhatup@gmail.com \418 M.2 Wongpong Pranburi Prachuapkhirikhan \facebook.com/bestwhatup \0811736937
5401012631025 \Klanarong \Raluek \kla \12.11.1992 \21 \male \Buddhism \60 \172 \kla_223@hotmail.com \4 M.4 Praputtabat Changklang Nan \facebook.com/kla223 \0824976605
5211164370 \Suwadee \Piyawartsopon \A \21.06.1990 \23 \female \Buddhism \53 \164 \p.suwadee_a@hotmail.com \47/2 M.12 Huaima Muang Phrae \facebook.com/alis492 \0811804841
5311564164 \Chukieat \Boontae \Poa \20.09.1987 \26 \male \Buddhism \80 \175 \poashadow@hotmaill.com \52/288 Phraramhokmansion Bang O Bang Phlat Bangkok \facebook.com/poashadow \0809004406
5401012630240 \Siriwimon \Sunthon \Jaa \16.07.1992 \21 \female \Buddhism \48 \162 \darkblood_rockaholic@hotmaill.com \434 Village No.3 Wangkrajae Sub-Distric Meong Trat Distric,Trat \facebook.com/siriwimon.sunthon \0849335018
5401012630142 \Parichat \Larwongsa \Tai \28.01.1993 \20 \female \Buddhism \57 \160 \tqy_naka@hotmail.com \346 Bangmod Chomthong Bangkok 10150 \facebook.com/parichat larwongsa \0906782882
5501012630109 \Thanakorn \Nguansiew \Boy \26.06.1993 \20 \male \Buddhism \106 \180 \podmeax@gmail.com \4 M.1 Thaka Amphawa Samutsongkhram 75110 \facebook.com/mheeboy \0836939551
5501012620073 \Wittawin \Kahuttanaseth \Dew \23.10.1993 \20 \male \Catholic \64 \155 \wittawin_k@hotmail.com \189/41 Siriya Homeland Watcharaphon rd. ThaRaeng Bangken Bangkok 10220 \facebook.com/wittawin.kahuttanaseth \0877990445
5501012630133 \Tatchagon \Koonkoei \Kol \02.06.1993 \20 \male \Buddhism \50 \168 \o_k_t@hotmail.com \111/1 M.3 Banmai Thamuang Kanchanaburi \facebook.com/tatchagon \0826810461
5401012620082 \Chonnipa \Yenpensuk \Myu \29 January 1993 \20 \Female \Buddhism \39 \155 \bahimuch@hotmail.com \65/4 M.5(93) Paknumkrajomthong Lane Rachaprek Road Bangphom Subdistrict Talingchan District Bangkok 10170 \facebook.com/za.tabo.za \0809783200
5401012630185 \Pokai \Nitiroj \Joint \19.11.1992 \21 \Male \Buddhism \80 \176 \pokai.nitiroj@gmail.com \111/472 Mantana(onnuch - outer ring) Dokmai Prawet Bangkok 10250 \facebook.com/jibjoint \0836029000
5211163182 \Teejuta \Kaewthong \Mimz \02.11.1990 \23 \Female \Buddhism \55 \174 \takachi_pada@hotmail.com \314/434 DonmuengVilla SongPraPa Road,Donmueng Bangkok 10210 \facebook.com/teejuta.kaewthong \0861075824
#!/usr/bin/env pythonเริ่มต้นนั้นโปรแกรมนี้จะทำการเปิดไฟล์ DB.txt ขึ้นมาอ่านแล้วทำการอ่านแต่ละบรรทัดไปเก็บไว้ใน List ที่ชื่อ all_line แล้วทำการ pop บรรทัดแรกออกเพราะบรรทัดแรกในไฟล์นั้น DB.txt นั้นเป็นหัวข้อของข้อมูลที่จะใส่ซึ่งเราไม่ต้องการนำหัวข้อตรงนี้มาใช้ จากนั้น sort ข้อมูลโดยจะเรียงตามลำดับเลขที่นักศึกษา จากนั้นสร้าง List ขึ้นมาใหม่อีกอันชื่อ All_Data แล้วจึงนำข้อมูลใน List ของ all_line แต่ละตัวมาใช้คำสั่ง split ซึ่งเป็น API พื้นฐานของ String ที่มากับ Python หลังจาก split แล้วก็ให้นำข้อมูลไปเก็บใน List All_Data ที่สร้างไว้ทำให้ข้อมูลใน All_Data นั้นเก็บไว้ในรูปแบบของ List ซ้อน List อีกที จากนั้นจึงเรียกใช้ฟังก์ชั่นเพื่อสร้างไฟล์ HTML ซึ่งโปรแกรมนี้จะมีฟังก์ชั่น 2 ฟังก์ชั่น คือ make_html และ make_index
def make_index(mData):
body = ""
for l in range(len(mData)):
body = body + """<a href=./htmlPage/""" + str(l) + """.html>""" + mData[l][0] + """</a><br><br>"""
file = open("./index.html", 'w')
file.write("""
<html>
<head>
<title>Index of Profile</title>
</head>
<body bgcolor="skyblue"><font color="brown">
<center>
<font size="10">Index of Student Profile by StudentID</font><br><br>
""" + body + """
</center>
</body>
</html>""")
file.close()
print "Generate Index HTML Complete"
def make_html(Maxpage, mi, mData):
Linkpage = ""
if mi==0:
Linkpage = Linkpage + """<p style="float: left; width: 33.33%; text-align: left;"></p>"""
else:
Linkpage = Linkpage + """<p style="float: left; width: 33.33%; text-align: left;"><a href="./"""+str(mi-1)+""".html">Previous</a></p>"""
Linkpage = Linkpage + """<p style="float: left; width: 33.33%; text-align: center;"><a href=./../index.html>Back To Index Page</a></p>"""
if mi<Maxpage-1:
Linkpage = Linkpage + """<p style="float: left; width: 33.33%; text-align: right;"><a href="./"""+str(mi+1)+""".html">Next</a></p>"""
file = open("./htmlPage/"+str(mi)+".html", 'w')
file.write("""
<html>
<head>
<title>Profile of """ + mData[0] + """</title>
</head>
<body bgcolor="skyblue"><font color="brown">
StudentID : """ + mData[0] + """<br><br>
Name : """ + mData[1] + " " + mData[2] + """<br><br>
Nickname : """ + mData[3] + """<br><br>
Birthday : """ + mData[4] + """<br><br>
Age : """ + mData[5] + """<br><br>
Sex : """ + mData[6] + """<br><br>
Religion : """ + mData[7] + """<br><br>
Weight : """ + mData[8] + """<br><br>
Height : """ + mData[9] + """<br><br>
E-mail : """ + mData[10] + """<br><br>
Address : """ + mData[11] + """<br><br>
Facebook : """ + mData[12] + """<br><br>
Phone Number : """ + mData[13][:10] + """<br></font>
""" + Linkpage + """
</body>
</html>""")
file.close()
print "Generate HTML Complete " + str(mi)
file = open("./DB.txt", "r")
all_line = file.readlines()
all_line.pop(0)
all_line.sort()
All_Data = []
for i in all_line:
All_Data.append(i.split(" \\"))
for k in range(len(All_Data)):
make_html(len(All_Data), k, All_Data[k])
make_index(All_Data)
โดย make_html นั้นมี Argument 3 ตัวคือ Maxpage, mi, mData โดย Maxpage คือจำนวนหน้าของ Profile ทั้งหมดซึ่งมีค่าตามความยาวของ List All_Data , mi เป็นเลขใช้สำหรับระบุลำดับที่จะใช้สร้าง HTML Page และ mData เป็น List ของข้อมูลที่จะนำไปใส่ใน HTML Page ที่ได้จากการ split ก่อนหน้านี้นั่นเอง จากนั้นสร้างตัวแปร Linkpage จากนั้นทำการเช็คเงื่อนไขหาก mi เป็นตัวแรกจะไม่ใส่ Link สำหรับ Previous หรือหากเป็นตัวสุดท้ายก็จะไม่ใส่ Next เช่นกันจากนั้นจึงสร้างไฟล์ HTML โดยใช้คำสั่งของ file มาเขียนโค้ด HTML ลงไปโดยดึงข้อมูลจาก mData ไปใส่ระหว่างการเขียนไฟล์ด้วยจากนั้นปิดท้ายด้วยการนำ Linkpage ไปใส่ไว้ล่างสุดของ HTML Code แล้วทำการปิด file จากนั้น print คำว่า Generate HTML Complete ตามด้วยเลขหน้าออกทางหน้าจอ
และ make_html มี Argument 1 ตัวคือ mData ซึ่งเป็นตัวแปรที่เก็บข้อมูลทั้งหมดไว้ จากนั้นเริ่มต้นด้วยการสร้างตัวแปรชื่อ Body แล้ววน loop ตามความยาวของ mData เพื่อเก็บ Code ที่ใช้สร้างลิ้งค์ไปยังไฟล์ HTML ของแต่ละเลขประจำตัวจากนั้นจึงเขียนลงไฟล์ที่ชื่อ index.html แล้วทำการปิดไฟล์ print คำว่า Generate Index HTML Complete ออกทางหน้าจอ
จากโปรแกรมนี้จะเห็นได้ว่าเราสามารถนำข้อมูลจากภายนอกมาใช้เป็นข้อมูลในโปรแกรมของเราและนำไปสร้างเป็นไฟล์ HTML ที่ใช้ในการแสดงผลอีกด้วยโดยการใช้ file นั้นจะเห็นว่า file = open("./DB.txt", "r") ในคำสั่ง open นั้นจะประกอบไปด้วยชื่อไฟล์ และ Mode ซึ่งจากที่ยกตัวอย่างนัั้นจะมีทั้ง "r" และ "w" โดย "r" นั้นจะเป็นโหมดในการอ่านเพียงอย่างเดียวเท่านั้น ส่วน "w" จะเป็นการเขียนไฟล์เท่านั้นหากมีไฟล์ชื่อนี้อยู่แล้วจะลบของเก่าทิ้งแล้วเขียนลงไปใหม่ นอกจากนี้ยังมีอีกโหมดนั่นก็คือ "a" ซึ่งโหมดนี้จะเป็นการเขียนไฟล์เพิ่มต่อจากของเดิม และสุดท้ายโหมด "r+" ซึ่งโหมดนี้สามารถทำได้ทั้งอ่านและเขียนไฟล์ได้เลย
โดยได้ศึกษาการใช้ open จากเว็บ python.org
โดยได้ศึกษาการเขียนโค้ด HTML จากเว็บ w3schools.com