Python - 从os.listdir创建带超链接的html页面
我有一个脚本,它会在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>')