से एक संपादक (vim) को कॉल करें, मैं उपयोगकर्ता से इनपुट मांगने के लिए एक पायथन स्क्रिप्ट में एक संपादक को कॉल करना चाहता हूं, crontab e
या git commit
करता है।एक पायथन स्क्रिप्ट
यहां तक कि अब तक जो चल रहा है उससे एक स्निपेट है। (भविष्य में, मैं vim के बजाय $ संपादक का उपयोग कर सकते हैं, जिससे कि लोगों को उनकी पसंद के हिसाब से अनुकूलित कर सकते हैं।)
tmp_file = '/tmp/up.'+''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(6))
edit_call = [ "vim",tmp_file]
edit = subprocess.Popen(edit_call,stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
मेरे समस्या यह है कि popen का उपयोग करके, यह मेरी मैं रखने के लिए/ओ अजगर स्क्रिप्ट के साथ लगता है विम की चलती प्रति में जाने से, और मुझे vim के माध्यम से i/o को पास करने का कोई तरीका नहीं मिल रहा है। मुझे निम्नलिखित त्रुटि मिलती है।
Vim: Warning: Output is not to a terminal
Vim: Warning: Input is not from a terminal
सबसे अच्छा तरीका यह करने के लिए अजगर से एक CLI कार्यक्रम, हाथ नियंत्रण कहते हैं, और फिर इसे वापस पारित एक बार आप इसे पूर्ण कर लें करने के लिए क्या है?
शानदार! मेरा एक संशोधन EDITOR सेट नहीं होने पर फ़ॉलबैक जोड़ना है: 'EDITOR = os.en वातावरण.get ('EDITOR') यदि os.en वातावरण.get ('EDITOR') और 'vim''' है। यदि आप इसे स्वीकार करना चाहते हैं, तो मैंने इसे आपके संपादन के रूप में सबमिट कर दिया है। सुझावों के लिए – sam
धन्यवाद @ एसएएम और @unutbu।मुझे नहीं पता था कि आप '$ EDITOR' को अनसेट कर सकते हैं :) – progo
+1, भले ही कुछ कारणों से संपादक मेरे उबंटू पर सेट न हो। अजीब (आर) '$ संपादक 'नैनो लॉन्च करता है जहां' क्रोंटब-ए 'ने vim लॉन्च किया ... – FMCorz