Найти - Пользователи
Полная версия: Создание собственного варианта linux команды tree
Начало » Центр помощи » Создание собственного варианта linux команды tree
1
Kabsash
Доброго времени суток!

Задача:
Реализуйте собственный вариант команды tree
Пусть программа поддерживает по меньшей мере ключи -d и -o так же, как это делает реализация утилиты tree в OC Linux.
Непонятно как сделать поддержку ключей. Да и вообще всю прогу…
GreyZmeem
Как-то так
# coding=utf-8
import os
 
def print_dir(path, prefix=u''):
        print u'{}├── {}'.format(prefix, os.path.basename(path))
 
        for item in os.listdir(path):
                p = os.path.join(path, item)
                if os.path.isdir(p):
                        print_dir(p, prefix + u'│  ')
                else:
                        print u'{}│  ├── (f) {}'.format(prefix, item)
 
print_dir('/etc/dovecot')
Вывод:
am@s01 ~ # python tree.py 
├── dovecot
│ ├── (f) sieve.conf
│ ├── conf.d
│ │ ├── (f) auth-system.conf.ext
│ │ ├── (f) auth-master.conf.ext
│ │ ├── (f) 10-auth.conf
│ │ ├── (f) 20-pop3.conf
│ │ ├── (f) auth-passwdfile.conf.ext
│ │ ├── (f) auth-ldap.conf.ext
│ │ ├── (f) 90-plugin.conf
│ │ ├── (f) 90-quota.conf
│ │ ├── (f) auth-vpopmail.conf.ext
│ │ ├── (f) 999-custom.conf
│ │ ├── (f) 20-managesieve.conf
│ │ ├── (f) auth-deny.conf.ext
│ │ ├── (f) 90-sieve.conf
│ │ ├── (f) 10-ssl.conf
│ │ ├── (f) 10-master.conf
│ │ ├── (f) auth-sql.conf.ext
│ │ ├── (f) auth-static.conf.ext
│ │ ├── (f) 10-director.conf
│ │ ├── (f) 90-acl.conf
│ │ ├── (f) 10-logging.conf
│ │ ├── (f) 15-mailboxes.conf
│ │ ├── (f) auth-checkpassword.conf.ext
│ │ ├── (f) 20-imap.conf
│ │ ├── (f) 10-tcpwrapper.conf
│ │ ├── (f) 15-lda.conf
│ │ ├── (f) 10-mail.conf
│ ├── (f) dovecot-sql.conf.ext
│ ├── private
│ │ ├── (f) dovecot.pem
│ ├── (f) dovecot.conf
│ ├── (f) README
│ ├── (f) dovecot-db.conf.ext
│ ├── (f) dovecot.passwd
│ ├── (f) dovecot-dict-sql.conf.ext
│ ├── (f) local.conf
│ ├── (f) dovecot-ldap.conf.ext
│ ├── (f) dovecot.pem
am@s01 ~ #
Также можете глянуть os.walk
Используйте os.path.islink для определения является ли файл линком.

Для работы с аргументами из командной строки есть модуль argparse

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

Удачи!
JOHN_16
Kabsash
Непонятно как сделать поддержку ключей
модули argparse или optparse
py.user.next
JOHN_16
модули argparse или optparse
argparse - это замена для optparse
есть модуль getopt - простой и маленький
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB