2013-04-19 2 views
0

Я новичок в Python и я такой код:Вызов команд оболочки из os.system не работает

os.system(''' PROMPT_COMMAND="printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' -" ''') 

части:

PROMPT_COMMAND="printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' -" 

делает печать - завалить ширина оболочки. Вышеупомянутая команда работает как ожидалось в командной строке. Но когда я сделал это на питоне. Я вообще ничего не получаю.

+2

'os.system' устарел. Он заменяется модулем [subprocess] (http://docs.python.org/2/library/subprocess.html). 'subprocess.Popen' - это то, что вы можете использовать здесь. – msvalkon

ответ

-2

Это будет сделано. Как я вижу, проблема связана с котировками:

import os 

PROMPT_COMMAND = 'printf "%*s\n" "${COLUMNS:-$(tput cols)}" "" | tr " " -' 
os.system(PROMPT_COMMAND) 
+1

Downvote для использования os.system() –

2

Нет смысла выдавать эту команду вообще.

Как я понимаю, вы просто устанавливаете переменную окружения PROMPT_COMMAND, чтобы заставить оболочку выполнить ее в каждом приглашении.

Но установка переменной окружения имеет только воздействие вызываемой оболочки, но не вызывающей. Вы не можете изменить среду своего родительского процесса.