2014-11-19 4 views
1

Я новичок в работе с Python, и, похоже, у меня проблема, что независимо от того, что я ищу, и что бы я ни старался, все еще выступает.Неожиданный символ после символа продолжения

Я пытаюсь выполнить системную команду, используя функцию exec.

Я попытался следующие:

exec("/usr/sbin/something --arg") 

который возвращает неверный синтаксис с курсором на первом /

Я попытался

exec("\\usr\\sbin\\something --arg") 

который возвращает неожиданный характер после того, как символ продолжения строки и курсор на последний символ моего аргумента g в этом случае.

Я искал решение за последний час, и ничего не помогло. Как я могу просто выполнить эту команду без ошибки?

Да, мои окончательные строки верны.

ответ

4

exec используется для выполнения Python код, который представлен в виде строки или кода объекта. Из docs:

exec(object[, globals[, locals]])

Эта функция поддерживает динамическое выполнение кода Python. object должен быть либо строкой, либо кодовым объектом. Если это строка, строка анализируется как набор операторов Python, который затем выполняется (если не возникает синтаксическая ошибка).

Чтобы выполнить команду операционной системы, вы можете использовать os.system:

import os 
os.system("/usr/sbin/something --arg") 
+0

:/Действительно ... Жаль, что я знал, что раньше ...: D Спасибо! * Редактировать * Это сработало, я соглашусь, когда смогу. –

+0

Еще раз спасибо чувак! Счастливое кодирование! –

-3

Может быть, попробовать положить r перед строкой, так что читает exec(r"\\usr\\sbin\\something --arg")

+1

я на самом деле пытались использовать как '' r' и r'. Никаких изменений в ошибках. –

+1

Размещение символа 'r' перед строковым литералом делает его [raw-string] (https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals), что просто означает, что escape-последовательности не обрабатываются. Но это не нужно в случае OP, потому что он уже избежал всех его обратных косых черт. – iCodez

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