Вероятно, вам будет проще сделать это в bash (например, как только вы поймете синтаксис, это всего одна или две строки), но для справки, вот как это сделать в Python. Вы хотите использовать две функции os.walk и fnmatch.fnmatch для сопоставления файлов, которые вы хотите в каждом каталоге. Это выглядит так:
#!/usr/bin/env python
import os, sys
from fnmatch import fnmatch
if len(sys.argv) != 2:
print "Usage:", sys.argv[0], "<directory>"
sys.exit()
markdown = # <path to markdown.py>
directory = sys.argv[1]
for path, directory, files in os.walk(directory):
for file in files:
if fnmatch(file, "*.html"):
html_file = "%s/%s" % (path, file)
markdown_file = html_file.replace(".html", ".markdown")
os.system("python %s %s > %s" % (markdown, markdown_file, html_file))
Основные вещи, которые нужно забрать:
- Функция
os.walk
обходит структуру каталогов (используя генератор). Возвращает три переменные:
- Текущий каталог (
path
)
- Список каталогов, найденных в текущем каталоге (
directories
). Вам не нужно это в этом случае.
- Список файлов, найденных в текущем каталоге (
files
). Вам это нужно.
- Функция
fnmatch.fnmatch
берет список файлов и сообщает вам, соответствует ли он шаблону. Это шаблон оболочки типа "glob", а не регулярное выражение. Вы можете использовать регулярные выражения здесь, но fnmatch
проще в таком простом случае, как этот.
Обратите внимание, что вам нужно указать путь к скрипту уценки. Еще лучше было бы не использовать os.system
а вместо этого импортировать разметку модуля и вызывать его основную функцию, но это обобщает программы, не относящиеся к Python. (Плюс, я не знаю точно, что это была бы за функция :).