2014-12-28 5 views
3

В моем сценарии Python Я пытаюсь выполнить следующий код:Как выполнить команду в скрипте Python?

import subprocess 
subprocecss.call("xrdb -load ~/.XDefaults") 

, но он не падает с ошибкой: «Нет такого файла или каталога», хотя это работает, когда я вставляю тот же код для терминала. Я также попробовал os.system (...) с импортом os, я попробовал его с помощью «xrdb -merge ~/.XDefaults», я попытался удалить команду ~/from, я даже попытался изменить «» на «нет», нет путь. Что я делаю неправильно?

+0

Существует множество способов сделать то, что вы хотите, не используя shell = True, я бы также использовал check_call вместо звонка –

ответ

4

Вы должны использовать shell=True или добавить свой файл с полным путем:

subprocecss.call("xrdb -load ~/.XDefaults",shell=True) 

из python wiki:

On Unix with shell=True, the shell defaults to /bin/sh. If args is a string, the string specifies the command to execute through the shell

On Windows with shell=True, the COMSPEC environment variable specifies the default shell. The only time you need to specify shell=True on Windows is when the command you wish to execute is built into the shell (e.g. dir or copy).

+0

он работает! Большое спасибо! –

+0

@ banan-olivka приветствую вас! – Kasramvd

+0

Прошу прощения за оффтоп, но, возможно, вы можете подсказать мне несколько сообщений, где я могу установить параметры переднего плана и фона –

1

Заметим, что поскольку subprocess.call по умолчанию не наследует ваше окружение значение для ~ не определено, так что вам либо необходимо передать флаг shell=True, (потенциально опасный), либо дать абсолютный путь для ~/.XDefaults, введя его или петь os.path.expanduser('~/.XDefaults'), чтобы получить его (как было предложено falstru).

+1

Что вы подразумеваете под 'path.abspath'? Если вы имеете в виду 'os.path.abspath', он не расширяет' ~ '. – falsetru

+0

В моей системе: '>>> os.path.abspath ('~') '/ home/gadget/~'' –

+0

Так что это неправильная функция для использования. Не так ли? (Функция зависит от текущего рабочего каталога. '' 'Сам не разворачивается.) – falsetru

Смежные вопросы