Python
Directory Listing
#!/usr/bin/env python
import os, webbrowser
#find all file and sub_directory
def find_dir( path ):
try:
allindir = []
allinfile = []
for f in os.listdir( path ):
name, ext = os.path.splitext( f )
if name.startswith(".") :#or ext == ".html":
continue
if ext == "":
allindir.append(f)
else:
allinfile.append(f)
return allindir,allinfile
except Exception as err:
print err
#generate html file
def make_html( path, mpass_dir, allindir, allinfile):
#loop for body in html
body = "<ol>"
if mpass_dir != "":
body = body + """<li><a href=./../page.html>Up to higher level directory</a></li><br>"""
for k in allindir:
body = body + """<li><a href=./""" + k + "/" + """page.html>""" + k + """</a></li><br>"""
for g in allinfile:
body = body + """<li><a href=./""" + g + """>""" + g + """</a></li><br>"""
body = body + "</ol>"
file = open(path+"/page.html", 'w')
file.write("""
<html>
<head>
<title>Directory listing for """ + path +"""</title>
</head>
<body bgcolor="skyblue">
<br><font color="white" size = "5">
Directory listing for """ + path +"""<br><br><hr><br><ul>
"""+body+ """
</font></ul><hr>
</body>
</html>
""")
file.close()
print "Generate HTML Complete"
#run make_html recursive
def remake_html(pass_dir,all_dir):
for i in all_dir:
os.chdir(i)
current_dir = os.getcwd()
newall_dir, newall_file = find_dir(current_dir)
make_html(current_dir, pass_dir, newall_dir, newall_file)
if len(newall_dir)>0:
remake_html(current_dir,newall_dir)
os.chdir(pass_dir)
original_dir = os.getcwd()
all_dir, all_file = find_dir( original_dir )
make_html(original_dir, "", all_dir, all_file)
remake_html(original_dir, all_dir)
os.chdir(original_dir)
webbrowser.open_new_tab("./page.html")
จากโค้ดข้างบนนี้เราได้
import os, webbrowser ซึ่ง
os เรา
import มาเพื่อใช้ในการค้นหาไฟล์และโฟลเดอร์ใน
Directory เพื่อน้ำไปสร้างเป็นไฟล์
HTML Directory Listing ส่วน
webbrowser ใช้ในการเปิดไฟล์
HTML ที่เราสร้างทันทีหลังรันโปรแกรมสร้างไฟล์
HTML เสร็จ
โดยโปรแกรมนี้จะประกอบด้วย
Function 3 อันคือ
find_dir, make_html, remake_html
โดยที่
find_dir มี
Argument 1 ตัวคือ
path ซึ่งจะทำการค้นหาไฟล์และโฟลเดอร์ย่อยภายใน
Directory ที่ป้อนให้แต่จะไม่นำไฟล์ที่เป็น
hidden file มาแสดงด้วยซึ่ง
Function นี้จะ
return ค่าออกมาเป็น
list 2 อันที่เก็บข้อมูลของไฟล์และโฟลเดอร์ใน
Directory ที่เราให้ค้นหากลับออกมา
ในส่วนของ make_html มี Arguments ทั้งหมด 4 ตัวคือ path, mpass_dir, allindir, allinfile ซึ่ง path ก็จะเป็นตัวที่เก็บข้อมูลของ Directory ที่กำลังจะสร้างไฟล์ HTML อยู่ในขณะนั้นและ mpass_dir คือตัวแปรเก็บ Directory ก่อนหน้าหรือชั้นบนของชั้นที่เราทำงานอยู่นั่นเอง ส่วน allindir และ allinfile จะเป็น list ที่เก็บข้อมูลของไฟล์และโฟลเดอร์ที่มีอยู่ใน Directory โดยฟังก์ชั่นนี้จะทำการสร้างลิ้งค์ซึ่งเป็นโค้ด HTML ของโฟลเดอร์และไฟล์ทั้งหมดตามลำดับเก็บไว้ในตัวแปร body ก่อนจากนั้นจึงสร้างไฟล์ HTML แล้วเขียนโค้ด HTML ลงไปในไฟล์ชื่อ page.html โดยส่วนของ body ก็นำตัวแปร body ที่สร้างไว้ก่อนหน้าไปใส่ในโค้ดด้วยเมื่อเขียนไฟล์เสร็จก็ทำการปิดไฟล์
จากนั้นในส่วนของ
remake_html เป็น
Function แบบ
recursive จะมี
Arguments ทั้งหมด
2 ตัวคือ
pass_dir, all_dir โดย
pass_dir คือตัวแปรเก็บ
Directory ของรอบก่อนหน้านี้ไว้
ส่วน all_dir จะเป็น
list ที่เก็บข้อมูลของโฟลเดอร์ที่เราต้องสร้างไฟล์
HTML ทั้งหมดไว้โดยเริ่มจากการวน
loop เพื่อเข้าถึงทุกๆโฟลเดอร์และทำการย้าย
Directory
ที่ทำงานไปที่โฟลเดอร์ที่กำลังเข้าถึงและทำการค้นหาไฟล์และโฟลเดอร์หากมีโฟลเดอร์ก็ให้เรียก
remake_html อีกทีเข้าไปสร้าง
HTML เพิ่มจนไม่มีโฟลเดอร์แล้วก็ย้อนกลับไปยัง
Directory ข้างบนผ่านตัวแปร
pass_dir
นั่นเองและก็วนไปเรื่อยๆจนครบทุกโฟลเดอร์ย่อยจากตำแหน่งที่เรารันโปรแกรม
เมื่อสร้างไฟล์
HTML ครบทั้งหมดแล้วก็ใช้คำสั่งของ
webbrowser ในการเปิด
HTML ของหน้าแรกสุดผ่าน
browser ขึ้นมาทันที
จะเห็นว่านอกจากเราจะสามารถเขียนไฟล์ HTML ผ่านโปรแกรม Python ได้แล้วนั้นเรายังสามารถใช้ความสามารถของโปรแกรม Python ในการค้นหาไฟล์และ Directory ที่อยู่ในโฟลเดอร์ต่างๆพร้อมทั้งยังสามารถนำชื่อไฟล์และโฟลเดอร์เหล่านั้นมาสร้างเป็น Directory Listing และลิ้งค์เข้าไปยังไฟล์หรือ Sub Directory เหล่านั้นได้ในรูปแบบไฟล์ HTML
โดยได้ศึกษาการเขียนโค้ด HTML จากเว็บ w3schools
จะเห็นว่านอกจากเราจะสามารถเขียนไฟล์ HTML ผ่านโปรแกรม Python ได้แล้วนั้นเรายังสามารถใช้ความสามารถของโปรแกรม Python ในการค้นหาไฟล์และ Directory ที่อยู่ในโฟลเดอร์ต่างๆพร้อมทั้งยังสามารถนำชื่อไฟล์และโฟลเดอร์เหล่านั้นมาสร้างเป็น Directory Listing และลิ้งค์เข้าไปยังไฟล์หรือ Sub Directory เหล่านั้นได้ในรูปแบบไฟล์ HTML
โดยได้ศึกษาการเขียนโค้ด HTML จากเว็บ w3schools
ไม่มีความคิดเห็น:
แสดงความคิดเห็น