IDLE इंटरेक्टिव शेल से एक पायथन स्क्रिप्ट कैसे चलाएं?


102

मैं IDLE इंटरेक्टिव शेल के भीतर से एक पायथन स्क्रिप्ट कैसे चलाऊँ?

निम्नलिखित एक त्रुटि फेंकता है:

>>> python helloworld.py
SyntaxError: invalid syntax

कैसा helloworld.pyदिखता है?
टेरीजा

हाँ, इसका मतलब है कि आप कुछ गलत हैं।
सीरियल

12
नहीं, जरूरी नहीं। संभावना है कि ओपी python helloworld.pyएक आईडीएलई शेल विंडो में टाइप कर रहा है और यह काम नहीं करता है।
नेड डिली

न ही यह मानक दुभाषिया में काम करेगा। यह मुद्दा सामने आया है जहां लोग गलती से सोचते हैं कि दुभाषिया प्रॉम्प्ट एक कमांड-लाइन प्रॉम्प्ट है।
जनवरी को टेरी जान कॉमेडी

यदि आपको अपने प्रश्न का सही उत्तर देना है तो आपको नेड डीली से उत्तर स्वीकार करना चाहिए। यह भी साथी डेवलपर्स को सही उत्तर को जल्दी से स्पॉट करने में मदद करेगा।
कृष्ण ओझा

जवाबों:


141

पायथन 3 :

exec(open('helloworld.py').read())

यदि आपकी फ़ाइल उसी dir में नहीं है:

exec(open('./app/filename.py').read())

वैश्विक / स्थानीय चर पास करने के लिए https://stackoverflow.com/a/437857/739577 देखें ।


पदावनत पायथन संस्करणों में

Python2 बिल्ट-इन फ़ंक्शन: एक्सेफाइल

execfile('helloworld.py')

इसे आम तौर पर तर्कों के साथ नहीं कहा जा सकता है। लेकिन यहाँ एक समाधान है:

import sys
sys.argv = ['helloworld.py', 'arg']  # argv[0] should still be the script name
execfile('helloworld.py')

2.6 के बाद से पदावनत: पोपेन

import os
os.popen('python helloworld.py') # Just run the program
os.popen('python helloworld.py').read() # Also gets you the stdout

तर्कों के साथ:

os.popen('python helloworld.py arg').read()

अग्रिम उपयोग: उपप्रकार

import subprocess
subprocess.call(['python', 'helloworld.py']) # Just run the program
subprocess.check_output(['python', 'helloworld.py']) # Also gets you the stdout

तर्कों के साथ:

subprocess.call(['python', 'helloworld.py', 'arg'])

विवरण के लिए डॉक्स पढ़ें :-)


इस मूल के साथ परीक्षण किया गया helloworld.py:

import sys
if len(sys.argv) > 1:
    print(sys.argv[1])

2
क्या आप कृपया कमांड लाइन के तर्कों के साथ एक उदाहरण जोड़ सकते हैं।
ViFI

1
Python3 के साथ काम नहीं करता है और पूछने वाले ने Python संस्करण को स्पष्ट रूप से निर्दिष्ट नहीं किया है
Suncatcher

जोड़ा गया execPython3 के लिए
ह्यूजेस फोंटेनेल

35

आप इसका उपयोग python3 में कर सकते हैं:

exec(open(filename).read())

24

IDLE शेल विंडो टर्मिनल शेल (जैसे चल रहा है shया bash) के समान नहीं है। बल्कि, यह पाइथन इंटरएक्टिव इंटरप्रेटर ( python -i) में होने जैसा है । IDLE में स्क्रिप्ट चलाने का सबसे आसान तरीका है मेनू Openसे कमांड का उपयोग करना File(यह आपकी आईडी फ़ाइल संपादक विंडो में लोड करने के लिए किस प्लेटफॉर्म पर चल रहा है) के आधार पर थोड़ा भिन्न हो सकता है और फिर Run-> Run Moduleकमांड (शॉर्टकट) का उपयोग करें F5)।


1
लेकिन आप तर्कों में पास नहीं हो सकते। :(
एरिका केन

3
दुर्भाग्य से, नहीं, कमांड लाइन के तर्कों में गुजरते हुए IDLE में पायथन फाइल को चलाना आसान नहीं है। ऐसा करने के लिए IDLE के लिए लंबे समय से खुला मुद्दा है ( bugs.python.org/issue5680 )। परीक्षण के लिए एक वर्कअराउंड sys.argvप्रोग्राम की शुरुआत में मैन्युअल रूप से प्रारंभ करना है , उदाहरण के लिए, सामान्य if __name__ == "__main__"बॉयलरप्लेट के तहत ।
नेड डीली

यह उत्तर स्पष्ट करता है कि हम IDLE शेल का उपयोग करके पायथन स्क्रिप्ट क्यों नहीं चला सकते हैं। धन्यवाद @NedDeily
arsho

1
IDLE 3.7.4 के रूप में, अब आप तर्कों के साथ एक मॉड्यूल चला सकते हैं। नए का उपयोग करें Run-> Run with Customized...कमांड (शॉर्टकट Shift + F5) और एक पॉपअप खुल जाएगा जहां आप अपने तर्क दे सकते हैं। दुर्भाग्य से यह उन्हें वर्तमान में याद नहीं है इसलिए आप उन्हें हर रन के साथ चिपकाएंगे।
डैन नोलन


4

execFile('helloworld.py')मेरे लिए काम करता है। ध्यान देने वाली बात यह है कि .py फ़ाइल का पूर्ण निर्देशिका नाम दर्ज करना है यदि यह पायथन फ़ोल्डर में ही नहीं है (कम से कम यह विंडोज़ पर मामला है)

उदाहरण के लिए, execFile('C:/helloworld.py')



2

उदाहरण के लिए:

import subprocess

subprocess.call("C:\helloworld.py")

subprocess.call(["python", "-h"])

2
subprocess.call(r'c:\path\to\something.py')मेरे लिए काम नहीं करता है। OSError: [WinError 193]% 1 वैध Win32 एप्लीकेशन नहीं है
Terry Jan Reedy

यह आयात करने की कोशिश करें ओएस आयात सबप्रोसेस DIR = os.path.join ('C: \\', 'उपयोगकर्ता', 'सर्गेई', 'डेस्कटॉप', 'a.py') subprocess.call (['पायथन', DIR] )
सर्गेई नोसोव

1

पायथन 3 में, नहीं है execFileexecउदाहरण के लिए, एक अंतर्निहित फ़ंक्शन का उपयोग कर सकते हैं :

import helloworld
exec('helloworld')

1

IDLE में, निम्नलिखित कार्य हैं: -

import helloworld

मैं इसके बारे में ज्यादा नहीं जानता कि यह क्यों काम करता है, लेकिन यह करता है ..


आप जो कर रहे हैं वह शेल से नहीं चलने वाले मॉड्यूल को लोड कर रहा है। दो में एक अंतर यह है: 1) लोड हो रहा है मॉड्यूल अपने मॉड्यूल का नाम __ = फ़ाइल का नाम 2) शेल मॉड्यूल नाम से चलाएं _name __ = " _main "
tanweer alam

यह कार्यक्रमों को चलाने का एक अच्छा तरीका नहीं है क्योंकि आप वास्तव में आयात कर रहे हैं और इसे नहीं चला रहे हैं। इसकी सामग्री आयात की जाएगी और यदि आप इनका उपयोग नहीं करना चाहते हैं तो यह अर्थहीन होगा।
Abhijeet.py

1

एक अजगर खोल में अजगर स्क्रिप्ट चलाने के लिए जैसे कि आइडल या एक Django शेल में आप निष्पादन () फ़ंक्शन का उपयोग करके निम्नलिखित कर सकते हैं। Exec () कोड ऑब्जेक्ट तर्क निष्पादित करता है। पायथन में एक कोड ऑब्जेक्ट बस पायथन कोड संकलित है। इसलिए आपको पहले अपनी स्क्रिप्ट फ़ाइल को संकलित करना होगा और फिर निष्पादन () का उपयोग करके इसे निष्पादित करना होगा। अपने खोल से:

>>>file_to_compile = open('/path/to/your/file.py').read()
>>>code_object = compile(file_to_compile, '<string>', 'exec')
>>>exec(code_object)

मैं पायथन 3.4 का उपयोग कर रहा हूं। विस्तृत जानकारी के लिए संकलन और निष्पादन डॉक्स देखें ।


1

मैंने इसका परीक्षण किया और यह पता चलता है:

exec(open('filename').read())  # Don't forget to put the filename between ' '

उद्धरण टिप के लिए धन्यवाद, इसने मेरे लिए काम किया। Upvoted।
फॉरएवर लर्नर

1

आप इसे दो तरीकों से कर सकते हैं

  • import file_name

  • exec(open('file_name').read())

लेकिन यह सुनिश्चित करें कि वह फ़ाइल संग्रहीत की जानी चाहिए जहाँ आपका प्रोग्राम चल रहा है


0

विंडोज पर्यावरण पर, आप पायथन फाइल को निम्नलिखित सिंटैक्स के साथ पायथन 3 शेल कमांड लाइन पर निष्पादित कर सकते हैं:

निष्पादन (खुला (file_name के लिए पूर्ण पथ))। () पढ़ें

नीचे बताया गया है कि अजगर शेल कमांड लाइन से एक साधारण हेलोवर्ल्डहोम फ़ाइल कैसे निष्पादित करें

फ़ाइल स्थान: C: /User/testuser/testfolder/helloworld.py

फ़ाइल सामग्री: प्रिंट ("हैलो वर्ल्ड")

हम पायथन 3.7 शेल पर इस फाइल को नीचे के रूप में निष्पादित कर सकते हैं:

>>> import os
>>> abs_path = 'C://Users/testuser/testfolder'
>>> os.chdir(abs_path)
>>> os.getcwd()
'C:\\Users\\testuser\\testfolder'

>>> exec(open("helloworld.py").read())
hello world

>>> exec(open("C:\\Users\\testuser\\testfolder\\helloworld.py").read())
hello world

>>> os.path.abspath("helloworld.py")
'C:\\Users\\testuser\\testfolder\\helloworld.py'
>>> import helloworld
hello world

इसे चलाने के लिए एक कार्यक्रम आयात करना एक अच्छा विकल्प नहीं है। यहां तक ​​कि मैंने शुरुआत में इसका इस्तेमाल किया था, लेकिन अब मैं संभावित समस्याओं के बारे में जानता हूं जैसे यह आपके कार्यक्रम की दक्षता को दूर कर देता है क्योंकि आप इसे आयात कर रहे हैं (हालांकि नगण्य है)।
Abhijeet.py

0

एक और विकल्प है (विंडोज़ के लिए) -

    import os
    os.system('py "<path of program with extension>"')

0

एक पायथन कंसोल में, व्यक्ति निम्नलिखित 2 तरीकों की कोशिश कर सकता है।

उसी कार्य निर्देशिका के तहत,

1. ... जहन्नुम आयात करें

# यदि आपके पास एक चर x है , तो आप इसे IDLE में प्रिंट कर सकते हैं।

>> Helloworld.x

# अगर आपके पास फंक्शन फंक है , तो आप इसे इस तरह भी कह सकते हैं।

>> Helloworld.func ()

2. "रनफाइल (" ./ helloworld.py ")

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.