Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@S_eki

treeコマンドもどきをpythonで書いてみた

はじめに

WindowsのtreeコマンドみたいなものがLinux環境で使えれば良いなと思い調べてみたが、
どうやら標準コマンドではないらしい。

これでは手軽に tree をインストール出来ない環境だと使えない・・・と思ったので
pythonで実装してみることにした。

treeコマンドの実行例(DOSコマンドの場合)

N:.
├─Document
│  ├─Backup
│  └─Download Files
├─Pictures
├─Video
└─Work
    ├─2010
    |  └─Event
    ├─2011
    └─2012

ソースコード

walk関数を使ってカレントディレクトリ直下のディレクトリ・ファイルを取得。
ファイル構造が変わった時にdiffが取れるように
出力結果はtxtファイルに出力できるようにした。

tree.py
# -*- coding: utf-8 -*-

import os

#export file
exportfile = "filetree.txt"

#current directory
searchdir = "."

print ("Export Start!")
wk = os.walk(searchdir)
with open(exportfile,mode="w") as f:
    for dirpath, dirs, files in wk:
        path = dirpath.split("/") 
        f.write("\t"*(len(path)-2) + path[-1] + "\n")
        for x in files:
            f.write("\t"*(len(path)-1) + "|" + "-" + x + "\n")
print ("Export Finished!")

出力結果

出力先のディレクトリ構造を下記とする。
1〜10の名前のついたディレクトリの中に、
それぞれ"11.txt"と"12.txt"の2つのテキストファイルが入っている。

スクリーンショット 2017-09-16 18.49.35.png

出力結果はこちら
スクリーンショット 2017-09-16 19.01.12.png

全てのファイルを取得することには成功したが見た目がまだ微妙。
DOSのtreeコマンドみたいに見た目をもう少し改善したいところ・・・!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?