4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python】Markdownを読み込みtreeを生成する方法

4
Last updated at Posted at 2023-03-24

[1.3.1] - 2026-07-05

Added

  • --copy オプションを追加し、結果をクリップボードへコピー可能に対応
    • パイプ入力(例: marktree file.md | clip)時に発生していた CP932 エンコーディングエラーを修正し、UTF-8 環境で安定して動作するよう改善

Changed

  • ヘルプ表示を -h / --helpに統一
  • CLIヘルプ文の表現を簡潔化し、全体トーンを統一
  • 標準出力・標準エラー出力を UTF-8 に統一
  • core/cli の責務を分離し、CLIが表示・例外処理を担当する構造へ変更

Fixed

  • UTF-8以外の環境で発生する文字化け問題を軽減
  • 本番依存に含まれていた pytest を削除し、開発用 dependency group へ正しく分離

1. はじめに

Markdownは、見出しの大きさを「#」の数で指定し、文章を簡単に構造化できる記法です。

Markdownを使用して情報をまとめる際、全体の構造を一目で把握したくなることがあります。その際に便利なのが、Markdownファイルの階層構造をUNIXコマンドのtreeのように出力することができるmarktreeコマンドです。

Linux向けからの変更

以前はLinux向けにaptでインストールできるようにPPAリポジトリを使用していましたが、Windowsに戻ったためスクリプトを書き直し、パッケージ名も「markdown-tree」から「marktree」に変更しました。インストールはPyPIを使用します。

詳しい開発経緯は以下の記事をご覧ください。

2. インストール

pip install marktree

3. 簡単な使い方

marktree [オプション] [file.md]
コマンド 説明
marktree -h ヘルプを表示
marktree -L 3 file.md 最大表示階層を指定
marktree -C クリップボードから Markdown を読み込む
marktree -P file.md 見出しのみをプレーンテキストで出力
marktree -E cp932 file.md ファイルの文字コードを指定
marktree --copy file.md 結果をクリップボードへコピー

4. 使用例

sample.md
# h1
## h2
### h3
## h2
# h1

通常の出力

marktree sample.md
├── h1
│  ├── h2
│  │  └── h3
│  └── h2
└── h1

表示する階層を制限

marktree -L 2 sample.md
├── h1
│  ├── h2
│  └── h2
└── h1

クリップボードから入力

クリップボードにコピーした Markdown テキストを読み込みます。

marktree -C

-L オプションと組み合わせることもできます。

marktree -C -L 3

見出しのみを出力

marktree -P sample.md

出力

# h1
## h2
### h3
## h2
# h1

結果をクリップボードへコピー

標準出力へ表示する代わりに、生成したツリーをクリップボードへコピーします。

marktree sample.md --copy

文字コードを指定

marktree -E cp932 sample.md

対応例

  • utf-8
  • cp932
  • shift_jis

5. オプションの詳細

-L

表示する見出しレベルを指定します。
指定できる値は 1~6 です。
デフォルトは 6 です。

-C

クリップボードにコピーされた Markdown テキストを入力として使用します。
ファイルを保存せずに構造を確認できます。

-P

ツリー化せず、見出しのみをそのまま出力します。

-E

Markdown ファイルを開く際の文字コードを指定します。
文字化けする場合はファイルの実際の文字コードを指定してください。

marktree -E cp932 sample.md

--copy

標準出力へ表示する代わりに、生成した結果をクリップボードへ直接コピーします。

オプションの順序

オプションの順序は自由です。
以下はどちらも同じ結果になります。

marktree -L 3 sample.md
marktree sample.md -L 3

複数の Markdown ファイルを指定した場合は、最後に指定したファイルを処理します。

Windows でインストール時に警告が表示された場合

Windows 環境では、pip install marktree の実行時に以下のような警告が表示されることがあります。

PATH に関する警告

WARNING: The script xxx.exe is installed in '...' which is not on PATH.

これは、marktree コマンドの保存先に PATH が設定されていない場合に表示される警告です。

対処方法は、以下の記事をご参照ください。

Powershellのバージョンが5なら、Profile.ps1の保存先フォルダは「Powershell」から「WindowsPowerShell」に変えてください。

Powershellのバージョンが7なら「Powershell」を使用してください。

インストールに失敗する警告

WARNING: Failed to write executable - trying to use .deleteme logic

この警告が表示されて pip install が失敗する場合は、以下の記事をご参照ください。

まとめ

marktreeはMarkdownファイルを読み込み、「#」の数だけ階層が深くなるtreeを生成するコマンドです。
目次代わりにも使えるので、ぜひ試してみてください。

GitHubとPyPI

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?