怎么把文件导入python_如何导入其他Python文件?
小編典典
導(dǎo)入python文件的方法有很多,各有利弊。
不要只是匆忙地選擇適合您的第一個導(dǎo)入策略,否則稍后您將在發(fā)現(xiàn)不符合您的需求時重寫代碼庫。
我將首先說明最簡單的示例#1,然后將介紹最專業(yè),最可靠的示例#7
示例1,使用python解釋器導(dǎo)入python模塊:
將其放在/home/el/foo/fox.py中:
def what_does_the_fox_say():
print("vixens cry")
進(jìn)入python解釋器:
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
>>>
您通過python解釋器導(dǎo)入了fox,并what_does_the_fox_say()從fox.py中調(diào)用了python函數(shù)。
示例2,在腳本中使用execfile或(exec在Python 3中)在適當(dāng)?shù)奈恢脠?zhí)行另一個python文件:
將其放在/home/el/foo2/mylib.py中:
def moobar():
print("hi")
將其放在/home/el/foo2/main.py中:
execfile("/home/el/foo2/mylib.py")
moobar()
運(yùn)行文件:
el@apollo:/home/el/foo$ python main.py
hi
功能moobar是從mylib.py導(dǎo)入的,并在main.py中可用
示例3,從…使用…導(dǎo)入…功能:
將其放在/home/el/foo3/chekov.py中:
def question():
print "where are the nuclear wessels?"
將其放在/home/el/foo3/main.py中:
from chekov import question
question()
像這樣運(yùn)行它:
el@apollo:/home/el/foo3$ python main.py
where are the nuclear wessels?
如果您在chekov.py中定義了其他函數(shù),那么除非您使用它們,否則它們將不可用 import *
示例4,如果導(dǎo)入的riaa.py與導(dǎo)入的文件位于不同的位置,請導(dǎo)入
將其放在/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()
運(yùn)行:
el@apollo:/home/el/foo4$ python main.py
computers are transforming into a noose and a yoke for humans
那會從另一個目錄導(dǎo)入外部文件中的所有內(nèi)容。
示例5,使用 os.system(“python yourfile.py”)
import os
os.system("python yourfile.py")
示例6,通過piggy帶python startuphook導(dǎo)入文件:
更新:此示例曾經(jīng)同時適用于python2和3,但現(xiàn)在僅適用于python2。python3擺脫了此用戶啟動鉤子功能集,因為它被低技能的python庫編寫者濫用,使用它在所有用戶定義的程序之前不禮貌地將其代碼注入到全局名稱空間中。如果您希望此功能適用于python3,則必須變得更有創(chuàng)意。如果我告訴您如何做,python開發(fā)人員也會禁用該功能集,因此您是一個人。
參見: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!")
運(yùn)行它,您應(yīng)該獲得以下信息:
$ 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,默認(rèn)情況下會禁用啟動鉤。
值得一提的是:https : //github.com/docwhat/homedir-examples/blob/master/python-commandline/.pythonrc.py隨便 發(fā)送。
示例7,最健壯:使用裸導(dǎo)入命令在python中導(dǎo)入文件:
建立一個新目錄 /home/el/foo5/
建立一個新目錄 /home/el/foo5/herp
制作一個__init__.py在herp下命名的空文件:
el@apollo:/home/el/foo5/herp$ touch __init__.py
el@apollo:/home/el/foo5/herp$ ls
__init__.py
新建一個目錄/ home / el / foo5 / herp / derp
在derp下,制作另一個__init__.py文件:
el@apollo:/home/el/foo5/herp/derp$ touch __init__.py
el@apollo:/home/el/foo5/herp/derp$ ls
__init__.py
在/ home / el / foo5 / herp / derp下,創(chuàng)建一個名為yolo.pyPut this 的新文件:
def skycake():
print "SkyCake evolves to stay just beyond the cognitive reach of " +
"the bulk of men. SKYCAKE!!"
關(guān)鍵時刻,創(chuàng)建新文件/home/el/foo5/main.py,并將其放入其中;
from herp.derp.yolo import skycake
skycake()
運(yùn)行:
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文件會通知python解釋器開發(fā)人員打算將此目錄作為可導(dǎo)入包。
2020-02-11
總結(jié)
以上是生活随笔為你收集整理的怎么把文件导入python_如何导入其他Python文件?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 麒麟软件与罗技达成深度合作,超 50 款
- 下一篇: 全国车企疯狂降价!吉利汽车CEO:吉利不