Python - 从os.listdir创建带超链接的html页面

1 投票
3 回答
4083 浏览
提问于 2025-04-15 16:06

我有一个脚本,它会在USB驱动器上创建一个叫“videos”的文件夹,然后把6500个WMV格式的视频文件移动到这个“videos”文件夹里。接着,它应该生成一个HTML页面,里面有每个文件的链接。现在我有一个示例,但它有点问题。我想让它去“videos”文件夹里找视频,并创建一个只包含USB驱动器上本地文件链接的HTML页面。

#!/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 个回答

1
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"

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更简单易懂。

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

不要先用 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>')

撰写回答