Bir İçin python -codaklı çözümü ve Bash kabuğu kullanarak İşletmesi, evet bu örnekte gibi basit bir tek satırlık sözdizimi sahip olabilir:
Böyle bir şey yapmak istediğinizi varsayalım ( except: passtalimat dahil olmak üzere örneğinize çok benzer ):
python -c "from __future__ import print_function\ntry: import numpy; print( numpy.get_include(), end='\n' )\nexcept:pass\n" OUTPUT_VARIABLE __numpy_path
Bu işe yaramaz ve bu hatayı üretmez:
File "<string>", line 1
from __future__ import print_function\ntry: import numpy; print( numpy.get_include(), end='\n' )\nexcept:pass\n
^
SyntaxError: unexpected character after line continuation character `
Bunun nedeni, Bash ve Python \nkaçış dizilerinin yorumlanması arasındaki rekabettir . Sorunu çözmek için $'string'Bash sözdizimini \nPython'dan ÖNCE Bash yorumlamasını zorlamak için kullanabilirsiniz . Örneği daha zorlaştırmak end=..\n..için Python baskı çağrısına tipik bir Python belirtimi ekledim : sonunda \nbash ve Python'dan her biri ilgili metin parçası üzerinde birlikte çalışarak İKİ yorumları elde edebileceksiniz . Böylece nihayet doğru çözüm şöyle:
python -c $'from __future__ import print_function\ntry:\n import numpy;\n print( numpy.get_include(), end="\\n" )\n print( "Hello" )\nexcept:pass\n' OUTPUT_VARIABLE __numpy_path
Bu, hatasız temiz çıktıya yol açar:
/Softs/anaconda/lib/python3.7/site-packages/numpy/core/include
Hello
Not: bu durum aynı zamanda execyönlendirilmiş çözümlerle de çalışmalıdır , çünkü sorun hala aynıdır (Bash ve Python tercümanlar yarışması).
Not 2: biri bazı değiştirerek sorununu geçici olabilir \nbazıları tarafından ;ama benim çözümü her zaman "tek hat" klasik çok hatlı Python programının herhangi bir parça sağlayan ederken, iş zaman (Python yapılara bağlı olarak) olmaz.
Not3: Tabii ki, tek astarlı olduğunda, her zaman Python boşlukları ve girinti ile ilgilenmek zorundadır, çünkü aslında burada kesinlikle "tek astarlı" değiliz, AMA \nbash ve Python arasında uygun bir kaçış dizisi düzgün bir şekilde yönetiyoruz . Klasik çok satırlı Python programının herhangi bir parçasını bu şekilde ele alabiliriz. Çözelti örneği bunu da gösterir.