2013-09-04 3 views

ответ

6

Вы можете использовать тройные кавычки, чтобы избежать каких-либо проблем с вложенными одиночные кавычки:

subprocess.Popen('''echo "var1+'hello!'+var2"''', shell=True) 

В случае, если вы хотите использовать один и тот же тройным котировки как разделитель , так и внутри строки, то вам нужно избежать котировок в строке:

'''some\'\'\'triple quotes\'\'\'''' -> "some'''triple quotes'''" 

В качестве альтернативы вы можете рассчитывать на то, что интерпретатор конкатенации последовательных строковых литералов, а также использовать различные цитаты для различных частей строки:

subprocess.Popen('echo "var1+' "'hello!'" '+var2"', shell=True) 

Обратите внимание, что в этом случае вы даже можете смешивать сырые строки с не -raw строки:

In [17]: print('non\traw' r'\traw' 'non\traw') 
non  raw\trawnon  raw 
3

Тройной котировки работы. Вы можете использовать либо ''' или """

subprocess.Popen('''echo "var1+'hello!'+var2"''', shell=True) 
1

Вы можете использовать тройные кавычки:

subprocess.Popen('''echo "var1+'hello!'+var2"''', shell=True) 


subprocess.Popen("""echo "var1+'hello!'+var2\"""", shell=True) 
Смежные вопросы