Уведомления

Группа в Telegram: @pythonsu

#1 Май 16, 2014 23:25:57

Kabsash
Зарегистрирован: 2014-05-16
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание собственного варианта linux команды tree

Доброго времени суток!

Задача:

Реализуйте собственный вариант команды tree
Пусть программа поддерживает по меньшей мере ключи -d и -o так же, как это делает реализация утилиты tree в OC Linux.
Непонятно как сделать поддержку ключей. Да и вообще всю прогу…

Офлайн

#2 Май 17, 2014 01:54:08

GreyZmeem
От: Киев
Зарегистрирован: 2013-12-03
Сообщения: 147
Репутация: +  34  -
Профиль   Отправить e-mail  

Создание собственного варианта linux команды tree

Как-то так

# 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.

Удачи!

Офлайн

#3 Май 17, 2014 07:33:57

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Создание собственного варианта linux команды tree

Kabsash
Непонятно как сделать поддержку ключей
модули argparse или optparse



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Май 17, 2014 12:26:49

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9730
Репутация: +  843  -
Профиль   Отправить e-mail  

Создание собственного варианта linux команды tree

JOHN_16
модули argparse или optparse
argparse - это замена для optparse
есть модуль getopt - простой и маленький



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version