Đối với một python -cgiải pháp định hướng và với điều kiện bạn sử dụng Bash shell, vâng, bạn có thể có một cú pháp một dòng đơn giản như trong ví dụ này:
Giả sử bạn muốn làm một cái gì đó như thế này (rất giống với mẫu của bạn, bao gồm cả except: passhướng dẫn):
python -c "from __future__ import print_function\ntry: import numpy; print( numpy.get_include(), end='\n' )\nexcept:pass\n" OUTPUT_VARIABLE __numpy_path
Điều này sẽ KHÔNG hoạt động và tạo ra lỗi này:
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 `
Điều này là do sự cạnh tranh giữa Bash và Python Giải thích các \nchuỗi thoát. Để giải quyết vấn đề, người ta có thể sử dụng $'string'cú pháp Bash để buộc \nBash diễn giải TRƯỚC KHI Python. Để làm cho ví dụ trở nên khó khăn hơn, tôi đã thêm một đặc end=..\n..tả Python điển hình trong lệnh gọi Python: cuối cùng, bạn sẽ có thể nhận được các \nphiên dịch BÓNG từ bash và Python làm việc cùng nhau, mỗi phần trên văn bản quan tâm của nó. Vì vậy, cuối cùng giải pháp thích hợp là như thế này:
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
Điều đó dẫn đến đầu ra sạch thích hợp không có lỗi:
/Softs/anaconda/lib/python3.7/site-packages/numpy/core/include
Hello
Lưu ý: điều này sẽ hoạt động tốt với execcác giải pháp định hướng, bởi vì vấn đề vẫn giống nhau (cạnh tranh phiên dịch Bash và Python).
Lưu ý 2: người ta có thể giải quyết vấn đề bằng cách thay thế một số \nbằng một số ;nhưng nó sẽ không hoạt động bất cứ lúc nào (tùy thuộc vào cấu trúc Python), trong khi giải pháp của tôi cho phép luôn "một dòng" bất kỳ phần nào của chương trình Python đa dòng cổ điển.
Lưu ý 3: tất nhiên, khi một lớp, người ta luôn phải chăm sóc các khoảng trống và thụt lề của Python, vì thực tế chúng ta không hoàn toàn "một lớp" ở đây, NHƯNG thực hiện một cách quản lý hỗn hợp đúng theo \ntrình tự thoát giữa bash và Python . Đây là cách chúng ta có thể đối phó với bất kỳ phần nào của chương trình Python đa dòng cổ điển. Mẫu giải pháp cũng minh họa điều này.