Python - 使用os.listdir的超链接创建html页面

时间:2009-11-17 15:45:14

标签: python

我有一个脚本在USB驱动器上创建一个名为“videos”的文件夹,将6,500个WMV文件移动到“videos”文件夹。然后,它假设创建一个HTML页面,其中包含指向每个文件的超链接。这是我目前的例子。我正在尝试让它抓取视频目录并创建一个HTML页面,其中仅包含超链接到USB驱动器上的本地文件。

#!/usr/bin/python
import os.path
import os
import shutil
import re

# Create the videos directory in the current location
# If the directory exists ignore it
def createDirectory():
    directory = "videos"
    if not os.path.isdir("./" + directory + "/"):
        os.mkdir("./" + directory + "/")
        print "Videos Folder Created."
    else:
        print "Video Folder Exists."
        print "---------------------"

# Move all the files in the root directory with the .wmv extension
# to the videos folder
def moveVideos():
    for file in os.listdir("."):
        if os.path.splitext(file)[1] == ".wmv":
            print "Moving:", file
            shutil.move(file, os.path.join("videos", file))

def createHTML():
    videoDirectory = os.listdir("videos")
    f = open("videos.html", "w")
    f.writelines(videoDirectory)
    r = re.compile(r"(\\[^ ]+)")
    print r.sub(r'<a href="\1">\1</a>', videoDirectory)

createDirectory()
moveVideos()
createHTML()

3 个答案:

答案 0 :(得分:9)

import cgi

def is_video_file(filename):
  return filename.endswith(".wmv") # customize however you like

def createHTML():
  videoDirectory = os.listdir("videos")
  with open("videos.html", "w") as f:
    f.write("<html><body><ul>\n")
    for filename in videoDirectory:
      if is_video_file(filename):
        f.write('<li><a href="%s">%s</a></li>\n' %
                (cgi.escape(filename, True), cgi.escape(filename)))
    f.write("</ul></body></html>\n")

答案 1 :(得分:1)

不要f.writelines(videoDirectory)然后正则表达式。此外,您只使用该正则表达式替换打印到控制台。

videoDirectory = os.listdir("videos")
f = open("videos.html", "w")
f.write('<html><head></head><body><ul>'    
f.writelines(['<li><a href="videos/%s">%s</a></li>' % (f, f) for f in videoDirectory])
f.write('</ul></body></html>')

答案 2 :(得分:0)

def createHTML():
    h = open("videos.html", 'w')
    for vid in os.listdir:
        path = "./videos" + vid
        f = open(path, r)
        h.write("<a href='"+f.name+"'>"+f.name[f.name.rfind('\\') +1 :]+"</a>")
        f.close()
    h.close()
    print "done writing HTML file"