Форум сайта python.su
Здравствуйте! Появился такой вопрос, как реализовать подобие терминала на Python, при этом что бы после ввода команд “cd ..” и “ls”, выводился список файлов не текущей директории а предыдущей?
Например в этих двух вариантах это не работает:
result = getoutput('cd ..')
result = getoutput('ls')
result = os.system('cd ..').read()
result = os.system('ls').read()
Я так понимаю в обоих случаях директория меняется, но после этого процесс взаимодействия с терминалом закрывается и комада ls уже применяется к папке где расположен скрипт.
Нашел модуль pexpect, но не могу понять как мне передать команду в процесс и получить ответ на нее…
Может быть кто-нибудь с подобным уже сталкивался?
Заранее спасибо за ответы!
Офлайн
предложу самый нелогичный но свой вариант:
записывать все команды в cmd/bat файл, затем выполнять его,
для его очистки придумать какую нить свою спец. команду
Офлайн
это конечно самый нереальный вариант, если ты так сделаешь я буду тебя ненавидеть ))
неделай так..
Отредактировано (Июнь 17, 2010 16:47:07)
Офлайн
Во-первых в любом случае bat-ники мне не подойдут, я работаю на Linux.
Во-вторых команды поступают время от времени, а не все сразу, иначе я бы просто сделал: “cd ..; ls”
Может быть кто-нибудь еще что то подскажет?
Офлайн
zazaza.sh
Во-первых в любом случае bat-ники мне не подойдут, я работаю на Linux
Офлайн
Это то понятно… тоже было такое решение но мне кажется это “костыли”… которые могут когда то и сломаться…
Офлайн
не совсем понятно что нужно и для чего. подробнее опишите - тогда предложим варианты решения.
ls можно запустить из любой папки (хоть из предыдущей) через Popen
Офлайн
можно перехватывать команду “cd” и выполнять её вручную: os.chdir(), после, все последующие команды будут выполняться из выбранной папки
Офлайн
getoutput(“cd ..&&ls”)
Отредактировано (Июнь 17, 2010 20:10:07)
Офлайн