मैं दुभाषिया के भीतर से अजगर कमांड के साथ एक फ़ाइल निष्पादित करने की कोशिश कर रहा हूं।
संपादित करें: मैं उस फ़ाइल से चर और सेटिंग्स का उपयोग करने की कोशिश कर रहा हूं, न कि एक अलग प्रक्रिया को लागू करने के लिए।
मैं दुभाषिया के भीतर से अजगर कमांड के साथ एक फ़ाइल निष्पादित करने की कोशिश कर रहा हूं।
संपादित करें: मैं उस फ़ाइल से चर और सेटिंग्स का उपयोग करने की कोशिश कर रहा हूं, न कि एक अलग प्रक्रिया को लागू करने के लिए।
जवाबों:
कई तरीके।
खोल से
python someFile.py
IDLE के अंदर से, F5 मारा ।
यदि आप अंतःक्रियात्मक रूप से टाइप कर रहे हैं, तो यह कोशिश करें: ( केवल पायथन 2 !)
>>> variables= {}
>>> execfile( "someFile.py", variables )
>>> print variables # globals from the someFile module
पायथन 3 के लिए , उपयोग करें:
>>> exec(open("filename.py").read())
pythonकाम नहीं करता है अगर आप अजगर 3 चला रहे हैं, तो python3इसका उपयोग किया जाता है।
stdinसे एक फ़ाइल से प्रदान <करने के लिए निष्पादित स्क्रिप्ट का उपयोग करने का तरीका है execfile()? @ s-lott
pythonइंगित करता है python3।
pythonपर्यावरण चर में फ़ोल्डर्स के माध्यम से देखने पर सिस्टम को जो निष्पादन योग्य लगता है, उस पर निर्भर करता है PATH।
पायथन 2 के लिए:
>>> execfile('filename.py')
पायथन 3 के लिए:
>>> exec(open("filename.py").read())
# or
>>> from pathlib import Path
>>> exec(Path("filename.py").read_text())
दस्तावेज देखें । यदि आप पायथन 3.0 का उपयोग कर रहे हैं, तो इस प्रश्न को देखें ।
इसे निष्पादित करने के बाद आप filename.py से ग्लोबल्स कैसे एक्सेस करते हैं, इसके उदाहरण के लिए @ S.Lott द्वारा उत्तर देखें।
exec(open("./path/to/script.py").read(), globals())
यह एक स्क्रिप्ट निष्पादित करेगा और इंटरप्रिटर के वैश्विक दायरे (अधिकांश स्क्रिप्टिंग वातावरण में सामान्य व्यवहार) में सभी वैश्विक चर डाल देगा।
openसीधे स्क्रिप्ट से कोड पढ़ता है। तर्कों को पारित करने के लिए, इस उत्तर को देखें , लेकिन इसके बजाय execfile, स्पष्ट रूप से उपयोग करें execऔर openजैसा कि ऊपर दिखाया गया है।
हैरानी की बात यह है कि मैंने अभी तक इसे नहीं देखा है। आप फ़ाइल का निष्पादन कर सकते हैं और फिर -iविकल्प का उपयोग करके निष्पादन समाप्त होने के बाद दुभाषिया को खुला छोड़ सकते हैं :
| foo.py |
----------
testvar = 10
def bar(bing):
return bing*3
--------
$ python -i foo.py
>>> testvar
10
>>> bar(6)
18
मैं उस फ़ाइल से चर और सेटिंग्स का उपयोग करने की कोशिश कर रहा हूं, न कि एक अलग प्रक्रिया को लागू करने के लिए।
ठीक है, बस फ़ाइल को import filename(शून्य से .py के साथ, उसी निर्देशिका में या आपके पास होने की आवश्यकता है) फ़ाइल आयात करना PYTHONPATH, filename.variableनाम में उपलब्ध चर, फ़ंक्शंस, कक्षाएं, आदि बनाते हुए फ़ाइल चलाएगा ।
इसलिए यदि आपके पास cheddar.pyचर स्पैम और फ़ंक्शन अंडे हैं - तो आप उन्हें आयात कर सकते हैं import cheddar, चर के साथ एक्सेस कर सकते हैं cheddar.spamऔर कॉल करके फ़ंक्शन चला सकते हैंcheddar.eggs()
यदि आपके पास cheddar.pyएक फ़ंक्शन के बाहर कोड है , तो इसे तुरंत चलाया जाएगा, लेकिन आयात पर सामान चलाने वाले एप्लिकेशन का निर्माण आपके कोड का पुन: उपयोग करने के लिए कठिन बनाने वाला है। यदि संभव हो, तो सब कुछ कार्यों या कक्षाओं के अंदर रखें।
from filename import *
मेरे विचार से, सबसे अच्छा तरीका है:
import yourfile
और yourfile.py को संशोधित करने के बाद
reload(yourfile)
या
import imp;
imp.reload(yourfile) in python3
लेकिन इससे फंक्शन और क्लासेस कुछ इस तरह दिखेंगे: yourfile.function1, yourfile.class1 .....
यदि आप उन लोगों को स्वीकार नहीं कर सकते हैं, तो अंत में समाधान है:
reload(yourfile)
from yourfile import *
मैं एक विशेषज्ञ नहीं हूं, लेकिन यह मैंने देखा है:
यदि आपका कोड उदाहरण के लिए mycode.py है, और आप सिर्फ 'import mycode' टाइप करते हैं, तो Python इसे निष्पादित करेगा लेकिन यह आपके सभी वैरिएबल को दुभाषिया को उपलब्ध नहीं कराएगा। मैंने पाया कि यदि आप इंटरप्रेटर को सभी चर उपलब्ध कराना चाहते हैं तो आपको वास्तव में 'mycode import *' से टाइप करना चाहिए।
बस करो,
from my_file import *
सुनिश्चित करें कि .py एक्सटेंशन को न जोड़ें। यदि आपकी .py फ़ाइल उपनिर्देशिका उपयोग में है,
from my_dir.my_file import *
पायथन 3 के लिए:
>>> exec(open("helloworld.py").read())
सुनिश्चित करें कि आप कमांड चलाने से पहले सही निर्देशिका में हैं।
किसी भिन्न निर्देशिका से फ़ाइल चलाने के लिए, आप नीचे दिए गए आदेश का उपयोग कर सकते हैं:
with open ("C:\\Users\\UserName\\SomeFolder\\helloworld.py", "r") as file:
exec(file.read())
आप निम्नलिखित सुविधाओं की इच्छा:
__name__ == '__main__' यह सही है इसलिए स्क्रिप्ट्स स्क्रिप्ट के रूप में ठीक से व्यवहार करती हैं।exec(open('foo.py').read())सुविधा 1 विफल रहता import fooरणनीति विफल रहता है सुविधा 2
दोनों प्राप्त करने के लिए, आपको इसकी आवश्यकता है:
source = open(filename).read()
code = compile(source, filename, 'exec')
exec(code)