2013-03-25 2 views
0

ВопросКак использовать команду кд терминала в Python

Как я могу изменить активный каталог на Raspberry Pi с использованием cd и subprocess module?

фон

Поскольку я абсолютно ненавижу использовать командную строку, я пытаюсь создать базовый графический текстовый редактор, который может также компилировать свои программы. На данный момент я просто пытаюсь изменить каталог на Desktop. Для этого я использую модуль subprocess. Вот мой текущий код:

from subprocess import * 
call(["cd","Desktop"]) 

В терминале эта линия (cd Desktop) изменит активный каталог на Desktop. Как ни странно, когда я запускаю его через subprocess, я дал эту ошибку:

OSError: [Errno 2] No such file or directory 

Технические характеристики

Raspberry Pi Model B

Raspbian "хриплый" OS

+0

Извините, что разорвал ваш пузырь, но LSTerminal, похоже, там, где я должен делать большую часть вещей на своем Pi. Терминал - это то, что делает Linux уникальным в моем сознании, потому что Windows и Apple не используют его для такой же функциональности. Я рекомендую попробовать использовать его больше, просто чтобы его повесить. Это очень полезно. – erdekhayser

ответ

4

Я бы попробовать os.chdir

import os 
os.chdir("/path/to/dir") 
+0

Это похоже работа. Но возможно ли это с подпроцессом? Я слышал, что 'os' устаревает. – xxmbabanexx

+4

@xxmbabanexx 'os' сам по себе не устаревает, а' os.system' есть. –

+1

[os не устаревает в ближайшее время] (http://docs.python.org/3.4/library/os.html) – kojiro

1

Я не хочу сорвать исходный вопрос, но если вы пытаетесь автоматизировать множество задач, вы можете использовать модуль fabric.

имеет довольно простой синтаксис вроде этого:

with cd('/path/to/app'): 
    with prefix('workon myvenv'): 
     run('./manage.py syncdb') 

http://docs.fabfile.org/en/1.6/api/core/context_managers.html

он предназначен для удаленного использования через SSH, но многие люди используют его для большого местного управления & развертывания

команда lcd работает на вашем компьютере:

with lcd('/path/to/app'): 
    with prefix('workon myvenv'): 
     run('./manage.py syncdb') 
Смежные вопросы