एक अजगर फ़ाइल आयात करने के कई तरीके हैं, सभी उनके पेशेवरों और विपक्षों के साथ।
बस जल्दबाजी में पहली आयात रणनीति न चुनें जो आपके लिए काम करती है या फिर आपको बाद में कोडबेस को फिर से लिखना होगा जब आप पाएंगे कि यह आपकी आवश्यकताओं को पूरा नहीं करता है।
मैं सबसे आसान उदाहरण # 1 की व्याख्या करना शुरू करूंगा, फिर मैं सबसे अधिक पेशेवर और मजबूत उदाहरण # 7 की ओर बढ़ूंगा
उदाहरण 1, अजगर इंटरप्रेटर के साथ एक अजगर मॉड्यूल आयात करें:
इसे /home/el/foo/fox.py में डालें:
def what_does_the_fox_say():
print("vixens cry")
अजगर दुभाषिया में जाओ:
el@apollo:/home/el/foo$ python
Python 2.7.3 (default, Sep 26 2013, 20:03:06)
>>> import fox
>>> fox.what_does_the_fox_say()
vixens cry
>>>
आपने अजगर इंटरप्रेटर के माध्यम से लोमड़ी आयात की, लोमड़ी के काम what_does_the_fox_say()
से अजगर समारोह को आमंत्रित किया।
उदाहरण 2, प्रयोग execfile
(या exec
पायथन 3 में ) स्क्रिप्ट में जगह में अन्य अजगर फ़ाइल को निष्पादित करने के लिए:
इसे /home/el/foo2/mylib.py में डालें:
def moobar():
print("hi")
इसे /home/el/foo2/main.py में डालें:
execfile("/home/el/foo2/mylib.py")
moobar()
फ़ाइल चलाएँ:
el@apollo:/home/el/foo$ python main.py
hi
फंक्शन मूबर को mylib.py से आयात किया गया था और इसे main.py में उपलब्ध कराया गया था
उदाहरण 3, उपयोग से ... आयात ... कार्यक्षमता:
इसे /home/el/foo3/chekov.py में डालें:
def question():
print "where are the nuclear wessels?"
इसे /home/el/foo3/main.py में डालें:
from chekov import question
question()
इसे इस तरह चलाएं:
el@apollo:/home/el/foo3$ python main.py
where are the nuclear wessels?
यदि आपने chekov.py में अन्य फ़ंक्शन निर्धारित किए हैं, तो वे तब तक उपलब्ध नहीं होंगे जब तक कि आप नहीं import *
उदाहरण 4, आयात raa.py अगर यह आयात किया गया है, जहां से एक अलग फ़ाइल स्थान में है
इसे /home/el/foo4/stuff/riaa.py में डालें:
def watchout():
print "computers are transforming into a noose and a yoke for humans"
इसे /home/el/foo4/main.py में डालें:
import sys
import os
sys.path.append(os.path.abspath("/home/el/foo4/stuff"))
from riaa import *
watchout()
चलाओ:
el@apollo:/home/el/foo4$ python main.py
computers are transforming into a noose and a yoke for humans
यह एक अलग निर्देशिका से विदेशी फ़ाइल में सब कुछ आयात करता है।
उदाहरण 5, उपयोग करें os.system("python yourfile.py")
import os
os.system("python yourfile.py")
उदाहरण 6, अजगर के माध्यम से अपनी फ़ाइल आयात करें
अद्यतन: यह उदाहरण python2 और 3 दोनों के लिए काम करता था, लेकिन अब केवल python2 के लिए काम करता है। python3 को इस उपयोगकर्ता स्टार्टअपहुक फीचर सेट से छुटकारा मिल गया क्योंकि यह कम-कौशल पायथन पुस्तकालय लेखकों द्वारा दुर्व्यवहार किया गया था, इसका उपयोग सभी उपयोगकर्ता-परिभाषित कार्यक्रमों से पहले उनके कोड को वैश्विक नामस्थान में इंजेक्ट करने के लिए किया गया था। यदि आप चाहते हैं कि यह python3 के लिए काम करे, तो आपको अधिक रचनात्मक बनना होगा। अगर मैं आपको बताता हूं कि यह कैसे करना है, तो अजगर डेवलपर्स उस सुविधा को सेट के रूप में भी अक्षम कर देंगे, इसलिए आप अपने दम पर हैं।
देखें: https://docs.python.org/2/library/user.html
इस कोड को अपने होम डायरेक्टरी में डालें ~/.pythonrc.py
class secretclass:
def secretmessage(cls, myarg):
return myarg + " is if.. up in the sky, the sky"
secretmessage = classmethod( secretmessage )
def skycake(cls):
return "cookie and sky pie people can't go up and "
skycake = classmethod( skycake )
इस कोड को अपने main.py (कहीं भी हो सकता है) में रखें:
import user
msg = "The only way skycake tates good"
msg = user.secretclass.secretmessage(msg)
msg += user.secretclass.skycake()
print(msg + " have the sky pie! SKYCAKE!")
इसे चलाएं, आपको इसे प्राप्त करना चाहिए:
$ python main.py
The only way skycake tates good is if.. up in the sky,
the skycookie and sky pie people can't go up and have the sky pie!
SKYCAKE!
यदि आपको यहां कोई त्रुटि मिलती है: ModuleNotFoundError: No module named 'user'
तो इसका मतलब है कि आप python3 का उपयोग कर रहे हैं, स्टार्टअपहूक को डिफ़ॉल्ट रूप से अक्षम किया गया है।
इस जिस्ट के लिए श्रेय जाता है: https://github.com/docwhat/homedir-examples/blob/master/python-commandline/.pythonrc.py अपने अप-बोट के साथ भेजें।
उदाहरण 7, सबसे अधिक मजबूत: अजगर में आयात फ़ाइलें नंगे आयात कमांड के साथ:
- एक नई निर्देशिका बनाओ
/home/el/foo5/
- एक नई निर्देशिका बनाओ
/home/el/foo5/herp
__init__.py
झुंड के नीचे एक खाली फ़ाइल बनाएं:
el@apollo:/home/el/foo5/herp$ touch __init__.py
el@apollo:/home/el/foo5/herp$ ls
__init__.py
एक नई निर्देशिका / घर / एल / foo5 / झुंड / derp बनाओ
Derp के तहत, एक और __init__.py
फाइल बनाएं :
el@apollo:/home/el/foo5/herp/derp$ touch __init__.py
el@apollo:/home/el/foo5/herp/derp$ ls
__init__.py
के तहत / घर / एल / foo5 / herp / derp एक नई फ़ाइल बनाने के लिए कहा जाता है yolo.py
यह वहाँ रखो:
def skycake():
print "SkyCake evolves to stay just beyond the cognitive reach of " +
"the bulk of men. SKYCAKE!!"
सत्य का क्षण, नई फाइल बनाओ /home/el/foo5/main.py
, इसे वहां रखो;
from herp.derp.yolo import skycake
skycake()
चलाओ:
el@apollo:/home/el/foo5$ python main.py
SkyCake evolves to stay just beyond the cognitive reach of the bulk
of men. SKYCAKE!!
खाली __init__.py
फ़ाइल अजगर दुभाषिया से संवाद करती है कि डेवलपर इस निर्देशिका को एक आयात करने योग्य पैकेज के रूप में रखता है।
यदि आप चाहते हैं कि एक निर्देशिका के तहत सभी .py फाइलें शामिल करने के तरीके पर मेरी पोस्ट देखें: https://stackoverflow.com/a/20753073/445131