zazaza
Июнь 17, 2010 14:16:37
Здравствуйте! Появился такой вопрос, как реализовать подобие терминала на Python, при этом что бы после ввода команд “cd ..” и “ls”, выводился список файлов не текущей директории а предыдущей?
Например в этих двух вариантах это не работает:
result = getoutput('cd ..')
result = getoutput('ls')
result = os.system('cd ..').read()
result = os.system('ls').read()
Я так понимаю в обоих случаях директория меняется, но после этого процесс взаимодействия с терминалом закрывается и комада ls уже применяется к папке где расположен скрипт.
Нашел модуль pexpect, но не могу понять как мне передать команду в процесс и получить ответ на нее…
Может быть кто-нибудь с подобным уже сталкивался?
Заранее спасибо за ответы!
zloyGamer
Июнь 17, 2010 16:43:39
предложу самый нелогичный но свой вариант:
записывать все команды в cmd/bat файл, затем выполнять его,
для его очистки придумать какую нить свою спец. команду
zloyGamer
Июнь 17, 2010 16:46:09
это конечно самый нереальный вариант, если ты так сделаешь я буду тебя ненавидеть ))
неделай так..
zazaza
Июнь 17, 2010 17:09:36
Во-первых в любом случае bat-ники мне не подойдут, я работаю на Linux.
Во-вторых команды поступают время от времени, а не все сразу, иначе я бы просто сделал: “cd ..; ls”
Может быть кто-нибудь еще что то подскажет?
UsCr
Июнь 17, 2010 17:20:19
zazaza
Во-первых в любом случае bat-ники мне не подойдут, я работаю на Linux
.sh
А если проблема только с cd, то запоминайте где в каком каталоге в данный момент находиться пользователь и следующую команду применяйте в виде cd /path; command
zazaza
Июнь 17, 2010 17:29:30
Это то понятно… тоже было такое решение но мне кажется это “костыли”… которые могут когда то и сломаться…
o7412369815963
Июнь 17, 2010 18:15:32
не совсем понятно что нужно и для чего. подробнее опишите - тогда предложим варианты решения.
ls можно запустить из любой папки (хоть из предыдущей) через Popen
o7412369815963
Июнь 17, 2010 18:20:34
можно перехватывать команду “cd” и выполнять её вручную: os.chdir(), после, все последующие команды будут выполняться из выбранной папки
Ed
Июнь 17, 2010 20:07:37
getoutput(“cd ..&&ls”)