У меня есть следующая файловая структура
|--folder1
| |---1.markdown
|--folder2
| |---2.markdown
|--folder3
| |---3.markdown
...
Я хотел бы преобразовать скидку с цены - файлы к HTML регистрируют таким образом, что HTML - файлы создаются к каждой определенной папке. Например, 1.html
должен быть в folder1
.
Я могу преобразовать одну скидку с цены - файл
markdown.py-2.6 1.markdown > 1.html
Таким образом, мы должны так или иначе смочь получить слово перед суффиксом перед каждым HTML файлы.
Как можно преобразовать многих скидка с цены - файлы в их соответствующие файлы HTML эффективно?
Вы, вероятно, найдете легче сделать это в ударе (как в, после того как Вы понимаете синтаксис, это - только одна или две строки), но для записи, вот то, как сделать это в 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
функция берет список файлов и говорит Вам, если она соответствует шаблону. Это - шаблон "шарика" оболочки и не регулярное выражение. Можно использовать регулярные выражения здесь, но fnmatch
просто легче для простого случая как это.Обратите внимание, что необходимо указать путь к сценарию скидки с цены. Еще лучше не должен был бы использовать os.system
но вместо этого импортировать скидку с цены модуль и вызов это - первичная функция, но это делает вывод к программам не-Python. (Плюс, я не знаю точно, какова та функция была бы :).