Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 17, 2010 14:16:37

zazaza
От:
Зарегистрирован: 2010-04-15
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Клиент для терминала.

Здравствуйте! Появился такой вопрос, как реализовать подобие терминала на Python, при этом что бы после ввода команд “cd ..” и “ls”, выводился список файлов не текущей директории а предыдущей?

Например в этих двух вариантах это не работает:
result = getoutput('cd ..')
result = getoutput('ls')

result = os.system('cd ..').read()
result = os.system('ls').read()

Я так понимаю в обоих случаях директория меняется, но после этого процесс взаимодействия с терминалом закрывается и комада ls уже применяется к папке где расположен скрипт.

Нашел модуль pexpect, но не могу понять как мне передать команду в процесс и получить ответ на нее…
Может быть кто-нибудь с подобным уже сталкивался?

Заранее спасибо за ответы!



Офлайн

#2 Июнь 17, 2010 16:43:39

zloyGamer
От:
Зарегистрирован: 2010-06-10
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Клиент для терминала.

предложу самый нелогичный но свой вариант:
записывать все команды в cmd/bat файл, затем выполнять его,
для его очистки придумать какую нить свою спец. команду



Офлайн

#3 Июнь 17, 2010 16:46:09

zloyGamer
От:
Зарегистрирован: 2010-06-10
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Клиент для терминала.

это конечно самый нереальный вариант, если ты так сделаешь я буду тебя ненавидеть ))

неделай так..



Отредактировано (Июнь 17, 2010 16:47:07)

Офлайн

#4 Июнь 17, 2010 17:09:36

zazaza
От:
Зарегистрирован: 2010-04-15
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Клиент для терминала.

Во-первых в любом случае bat-ники мне не подойдут, я работаю на Linux.
Во-вторых команды поступают время от времени, а не все сразу, иначе я бы просто сделал: “cd ..; ls”

Может быть кто-нибудь еще что то подскажет?



Офлайн

#5 Июнь 17, 2010 17:20:19

UsCr
От:
Зарегистрирован: 2009-11-04
Сообщения: 216
Репутация: +  0  -
Профиль   Отправить e-mail  

Клиент для терминала.

zazaza
Во-первых в любом случае bat-ники мне не подойдут, я работаю на Linux
.sh

А если проблема только с cd, то запоминайте где в каком каталоге в данный момент находиться пользователь и следующую команду применяйте в виде cd /path; command



Офлайн

#6 Июнь 17, 2010 17:29:30

zazaza
От:
Зарегистрирован: 2010-04-15
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Клиент для терминала.

Это то понятно… тоже было такое решение но мне кажется это “костыли”… которые могут когда то и сломаться…



Офлайн

#7 Июнь 17, 2010 18:15:32

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Клиент для терминала.

не совсем понятно что нужно и для чего. подробнее опишите - тогда предложим варианты решения.

ls можно запустить из любой папки (хоть из предыдущей) через Popen

Офлайн

#8 Июнь 17, 2010 18:20:34

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Клиент для терминала.

можно перехватывать команду “cd” и выполнять её вручную: os.chdir(), после, все последующие команды будут выполняться из выбранной папки

Офлайн

#9 Июнь 17, 2010 20:07:37

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Клиент для терминала.

getoutput(“cd ..&&ls”)



Отредактировано (Июнь 17, 2010 20:10:07)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version