पर डेटा पास करने के लिए मैं एक स्क्रिप्ट का आह्वान करना चाहता हूं, स्ट्रिंग की सामग्री को अपने stdin पर पाइप करना और इसके stdout को पुनर्प्राप्त करना चाहता हूं।subprocess.check_output
मैं असली फाइल सिस्टम को स्पर्श नहीं करना चाहता हूं इसलिए मैं इसके लिए वास्तविक अस्थायी फ़ाइलें नहीं बना सकता।
subprocess.check_output
का उपयोग करके मैं स्क्रिप्ट लिखता हूं; मैं इनपुट स्ट्रिंग को अपने stdin में कैसे प्राप्त कर सकता हूं?
subprocess.check_output([script_name,"-"],stdin="this is some input")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/subprocess.py", line 537, in check_output
process = Popen(stdout=PIPE, *popenargs, **kwargs)
File "/usr/lib/python2.7/subprocess.py", line 672, in __init__
errread, errwrite) = self._get_handles(stdin, stdout, stderr)
File "/usr/lib/python2.7/subprocess.py", line 1043, in _get_handles
p2cread = stdin.fileno()
AttributeError: 'str' object has no attribute 'fileno'
'check_output()' के लिए 'stdin' arg एक फ़ाइल ऑब्जेक्ट होना चाहिए, स्ट्रिंग नहीं। – jdi
@jdi स्पष्ट रूप से; तो इसे फ़ाइल की तरह कुछ क्वैक कैसे देना है लेकिन फाइल नहीं है? – Will
@larsmans का चयन करके उत्तर :-) यदि आप 'check_output' सुविधा फ़ंक्शन को ओवरस्यूज़ करने का प्रयास नहीं करते हैं और केवल सामान्य पॉपन + संवाद करते हैं तो यह बहुत आसान है। अन्यथा आपको हाथ से पहले मैन्युअल रूप से अपना खुद का पाइप खोलने की उम्मीद की जाएगी, और फिर इसे 'check_output (stdin)' पर पास करें और फिर इसे लिखें। – jdi