Преобразовать скидку с цены - файлы эффективно к HTML - файлы

У меня есть следующая файловая структура

|--folder1
|   |---1.markdown
|--folder2
|   |---2.markdown
|--folder3
|   |---3.markdown
...

Я хотел бы преобразовать скидку с цены - файлы к HTML регистрируют таким образом, что HTML - файлы создаются к каждой определенной папке. Например, 1.html должен быть в folder1.

Я могу преобразовать одну скидку с цены - файл

markdown.py-2.6 1.markdown > 1.html

Таким образом, мы должны так или иначе смочь получить слово перед суффиксом перед каждым HTML файлы.

Как можно преобразовать многих скидка с цены - файлы в их соответствующие файлы HTML эффективно?

1
задан 09.06.2013, 01:21

3 ответа

Можно сделать это с маленьким сценарием удара:

for i in `find . -name "*.markdown"`; do 
  markdown.py-2.6 $i > `dirname $i`/`basename -s .markdown $i`.html
done
2
ответ дан 12.12.2019, 08:19

Модификация ответа jamuraa:

for i in `find . -name "*.markdown"`; do
  pushd `dirname $i`
  markdown.py-2.6 $i > `basename -s .markdown $i`.html
  popd
done
1
ответ дан 12.12.2019, 08:19

Вы, вероятно, найдете легче сделать это в ударе (как в, после того как Вы понимаете синтаксис, это - только одна или две строки), но для записи, вот то, как сделать это в 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. (Плюс, я не знаю точно, какова та функция была бы :).

1
ответ дан 12.12.2019, 08:19

Теги

Похожие вопросы