2012-05-26 9 views
10

का उपयोग कर कमांड लाइन में तारों के रूप में पारित पायथन आदेश निष्पादित करें क्या Python -c का उपयोग कर स्ट्रिंग के रूप में पारित पायथन आदेश निष्पादित करना संभव है? क्या कोई उदाहरण दे सकता है।पाइथन-सी

+1

आप हमारे साथ साझा कर सकते हैं कि तुम क्या अब तक की कोशिश की? – Levon

+0

असल में, मैं पाइथन-सी "" प्रारूप का उपयोग करने के तरीके की तलाश में था। – kasa

उत्तर

7

के लिए एक एकल स्ट्रिंग आप python -c का उपयोग कर सकते हैं। लेकिन स्ट्रिंग्स के लिए के रूप में सवाल पूछता है, आप से गुजरना होगा उन्हें stdin के लिए:

$ python << EOF 
> import sys 
> print sys.version 
> EOF 
2.7.3 (default, Apr 13 2012, 20:16:59) 
[GCC 4.6.3 20120306 (Red Hat 4.6.3-2)] 
+4

मुझे जवाब मिला। बस इसे टर्मिनल पर पेस्ट करें। पायथन-सी "आयात sys; x = 'हैलो वर्ल्ड'; प्रिंट एक्स;" – kasa

+0

यह * एक * स्ट्रिंग है। यदि आप * तार * चाहते हैं तो आपको उन्हें stdin पर फ़ीड करने की आवश्यकता है। –

0

अजगर eval है। इस स्क्रिप्ट का प्रयास करें।

import sys 

str = sys.argv[1] 
eval(str) 

इस तरह यह आह्वान:

$ python3 eval.py 'print(1 + 1)' 
2 
15

आप -c उपयोग कर सकते हैं एक स्ट्रिंग निष्पादित करने के लिए अजगर पाने के लिए। उदाहरण के लिए:

python3 -c "print(5)"

हालांकि, वहाँ से बच वर्ण (उदा \n) का उपयोग करने के लिए एक रास्ता होना करने के लिए प्रतीत नहीं होता। इसलिए, यदि आपको उनकी आवश्यकता है, तो इसके बजाय echo -e या printf से पाइप का उपयोग करें। उदाहरण के लिए:

$ printf "import sys\nprint(sys.path)" | python3

+0

'पायथन 3-सी" आयात sys; प्रिंट (sys.path) "' सरल है। – mattmc3

+0

@ mattmc3 आप अर्धविराम के साथ एक ब्लॉक (जहां इंडेंटेशन कम हो जाएगा) समाप्त नहीं कर सकते हैं। तो यह अधिक सीमित है; उदाहरण के लिए, आप एक फ़ंक्शन नहीं बना सकते हैं और फिर वास्तव में इसे कॉल कर सकते हैं, या यदि कोई और, या बिना शर्त कोड के बाद भी उपयोग कर सकते हैं। लेकिन (जहां संभव हो) यह आसान है। – Kevin