सही जवाब है:
py2output = subprocess.check_output(['python','py2.py','-i', 'test.txt'])
प्रदर्शित करने के लिए, यहाँ मेरे दो कार्यक्रम हैं:
py2.py:
import sys
print sys.argv
py3.py:
import subprocess
py2output = subprocess.check_output(['python', 'py2.py', '-i', 'test.txt'])
print('py2 said:', py2output)
यह चल रहा है :
$ python3 py3.py
py2 said: b"['py2.py', '-i', 'test.txt']\n"
गया है कि आपकी संस्करणों में से प्रत्येक के साथ कुछ गलत है:
py2output = subprocess.check_output([str('python py2.py '),'-i', 'test.txt'])
पहले, str('python py2.py')
वास्तव में एक str
लेने, और str
बुला यह एक str
कन्वर्ट करने के लिए -तुम 'python py2.py'
रूप में एक ही बात है। यह कोड को किसी भी लाभ को जोड़ने के बिना, लंबे, और यहां तक कि धीमे पढ़ने के लिए कठिन बनाता है।
अधिक गंभीरता से, python py2.py
एक भी तर्क नहीं हो सकता है, जब तक कि आप वास्तव में नामित प्रोग्राम चलाने की कोशिश नहीं कर रहे हैं, /usr/bin/python\ py2.py
। जो आप नहीं हैं; आप पहले तर्क py2.py
के साथ, /usr/bin/python
चलाने के लिए कह रहे हैं। इसलिए, आपको सूची में उन्हें अलग-अलग तत्व बनाने की आवश्यकता है।
आपका दूसरा संस्करण उसमें हल करता है, लेकिन test.txt'
से पहले आप '
खो रहे हैं। यह आपको SyntaxError
देना चाहिए, शायद EOL while scanning string literal
कह रहा है।
इस बीच, मुझे यकीन नहीं है कि आपको दस्तावेज़ कैसे मिला लेकिन तर्कों के साथ कोई उदाहरण नहीं मिला। बहुत पहले उदाहरण है:
>>> subprocess.check_output(["echo", "Hello World!"])
b'Hello World!\n'
एक अतिरिक्त तर्क, "Hello World!"
साथ "echo"
आदेश कहता है कि।
इसके अलावा:
मैं argparse, परीक्षण के लिए एक स्थितीय तर्क है।txt क्या मैं
मैं यकीन है कि -i
नहीं एक स्थितीय तर्क है, लेकिन एक वैकल्पिक तर्क है कर रहा हूँ है। अन्यथा, वाक्य के दूसरे भाग में कोई मतलब नहीं है।
चलाने के लिए क्या हुआ जब वे काम नहीं करते थे? – khagler
पायथन 3 फ़ाइल के माध्यम से पाइथन 2 फ़ाइल चलाने की कोशिश कर रहा है? नहीं, होने वाला नहीं है। पाइथन 3 जानबूझकर पीछे नहीं है- पायथन 2 के साथ संगत। आपको अपनी फाइल को पायथन 3 में काम करने के लिए * स्टार्टर्स * के लिए '2to3' चलाने की आवश्यकता होगी। – Makoto
@Makoto: वह पाइथन 2 दुभाषिया को एक के भीतर से चलाने की कोशिश कर रहा है पायथन 3 स्क्रिप्ट, जो पूरी तरह से उचित है। (और अपने पिछले प्रश्न से, यह जानना होता है कि वह विशेष रूप से उन समस्याओं के लिए कामकाज के रूप में कर रहा है, जिनके बारे में आप सोच रहे हैं, लेकिन यह यहां प्रासंगिक नहीं है।) – abarnert