版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第python運行或調(diào)用另一個py文件或參數(shù)方式目錄python運行或調(diào)用另一個py文件或參數(shù)1.運行另一個py文件2.引用另一個py文件中的變量python調(diào)用自己寫的py文件python如何調(diào)用自己寫的py文件呢?如果是不同目錄怎么調(diào)用呢?如果需要調(diào)用的多個文件在多個目錄呢?關(guān)于__init__.py的解釋關(guān)于sys.path的解釋關(guān)于pyc與pyo文件模塊導(dǎo)入時內(nèi)部的原理
python運行或調(diào)用另一個py文件或參數(shù)
1.運行另一個py文件
(1)在file_A.py中運行file_B.py文件
importos
os.system("pythonfile_B.pypara_a1para_a2")
#其他形式
os.system("pythonfile_B.py%s"%para_A)
os.system("pythonfile_B.py"+para_A)
需要注意文件路徑的寫法,因為我是在docker中運行文件,文件名前面需要加/,如os.system(python/file_B.py)
(2)file_B.py使用file_A.py傳遞的參數(shù)
importsys
print(sys.argv)
#由打印的結(jié)果可知,sys.argv[1:]是命令行傳遞的參數(shù),sys.argv[0]是命令行運行的文件名
para_B=sys.argv[1]
2.引用另一個py文件中的變量
fromfile_Aimportdf_A
python調(diào)用自己寫的py文件
python如何調(diào)用自己寫的py文件呢?
同一個目錄下直接寫importxx就好了,xx為自己要調(diào)用的模塊名字,雖然會有下劃線報錯,其實,沒有錯,仍然可以調(diào)用,之前一直都被報錯嚇住了
如果是不同目錄怎么調(diào)用呢?
那就把需要調(diào)用的那個目錄添加一下,比如調(diào)用C:\xxx\a.py
那就添加一下c:\xxx路徑(windows的路徑和linux的路徑符號不同\\,/,注意區(qū)別)
然后importa就行了,前面寫r是為了告訴python這是路徑,別把\n等特殊組合給轉(zhuǎn)譯了,
如果同c:\xxx目錄下有多個文件,比如a.py,b.py等等,也可以直接導(dǎo)入了,因為這是告訴python去這個文件夾尋找包文件
importsys
sys.path.append(r"C:\xxx")
importa
importb
如果需要調(diào)用的多個文件在多個目錄呢?
當然可以多次寫sys.path.append(rC:\xxx)來添加多個目錄,
但是這樣很麻煩,如果文件距離很近,比如這樣就沒有必要寫
解決方法是添加一個空的__init__.py文件(用于定義包的屬性和方法,可以為空),表示這是一個包,比如這樣,聲明了aaa為一個包,a是內(nèi)部的方法
也可以這樣,表示bbb是一個包,bb是bbb的子包,b是bb包的內(nèi)部的方法
然后如果你需要調(diào)用a.py與b.py,就可以
testcode.py
importaaa.a
importbbb.bb.b
importccc.c
如果你在c.py文件,想要調(diào)用a.py,b.py只需要用到步驟2的知識即可,比如
c.py
importsys
#添加上級目錄
sys.path.append("..//")
importaaa.a
importbbb.bb.b
關(guān)于__init__.py的解釋
作用是將文件夾變?yōu)橐粋€Python模塊,導(dǎo)入包時,事實上是導(dǎo)入了它的__init__.py文件
__init__.py文件可以為空,但是也可以添加如下兩個功能
1.初始化包中各個模塊,批量導(dǎo)入
pack包,配置__init__.py
importa
importb
導(dǎo)入pack包
訪問__init__.py文件中的引用文件,需要加上包名
importpack
print(pack.a,pack.b)
2.__init__.py中的__all__,全部導(dǎo)入所聲明的模塊
此時導(dǎo)入pack包就相當于導(dǎo)入了a.py,b.py,c.py
pack包,配置__init__.py
__all__=['a','b','c']
調(diào)用
frompackimport*
關(guān)于sys.path的解釋
當導(dǎo)入模塊時,解釋器按照sys.path列表中的目錄順序來查找文件。
print(sys.path)
會打印出一個list列表,表示引入文件時查找的文件目錄,第一個元素空字符表示當前目錄
關(guān)于pyc與pyo文件
pyc就是py編譯時生成的字節(jié)碼文件,以后每次導(dǎo)入都會執(zhí)行pyc,當py文件更新時pyc也會更新
如果解釋器添加-o命令,py編譯時會生成pyo文件,它相比pyc去掉了斷言(assert)、斷行號以及其他調(diào)試信息,運行速度更快
如果使用-OO選項,生成的pyo文件會忽略文檔信息
模塊導(dǎo)入時內(nèi)部的原理
import可導(dǎo)入的對象可以是以下類型:
模塊文件(.py文件)C或C++擴展(已編譯為共享庫或DLL文件)包(包含多個模塊)內(nèi)建模塊(使用C編寫并已鏈接到Python解釋器中)理解為后綴就是.py、.pyo、.pyc、.pyd、.so、.dll
解釋器工作:
1.根據(jù)導(dǎo)入的文件名創(chuàng)建命名空間(用來訪問文件內(nèi)部屬性與方法)
2.在命名空間內(nèi)執(zhí)行源代碼
3.創(chuàng)建一個源代碼文件的對象,這個對象引用對應(yīng)的命名空間,管理模塊的內(nèi)部函數(shù)與變量
4.一個模塊可以多次導(dǎo)入,但是后面導(dǎo)入的模塊只執(zhí)行第三步
sys.modules可以打印出導(dǎo)入的模塊名與模塊對象的映射
因此可以理解導(dǎo)入文件的三種方式:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單板加工工操作水平強化考核試卷含答案
- 鑿巖臺車司機安全技能測試強化考核試卷含答案
- 礦車修理工崗前沖突管理考核試卷含答案
- 傳聲器裝調(diào)工操作規(guī)程強化考核試卷含答案
- 沙地治理工安全理論水平考核試卷含答案
- 承包精英合同范本
- 房建地勘合同范本
- 分戶公房合同范本
- 跨店轉(zhuǎn)讓合同范本
- 車輛審驗合同范本
- 面癱中醫(yī)教學(xué)課件
- 養(yǎng)老護理員初級理論試題及答案
- 鉆芯法檢測混凝土強度技術(shù)規(guī)程JGJ-T384-2024
- 電氣火災(zāi) 培訓(xùn) 課件
- 2025年廣西專業(yè)技術(shù)人員繼續(xù)教育公需科目(三)答案
- DZ/T 0181-1997水文測井工作規(guī)范
- T/CECS 10260-2022綠色建材評價一體化生活污水處理設(shè)備
- T/CCS 065-2023智能化煤礦水害防治系統(tǒng)運維管理規(guī)范
- 2025年北京市豐臺區(qū)中考數(shù)學(xué)一模試卷
- 2025預(yù)制混凝土疊合板盤扣式塔柱支撐、獨立支撐施工技術(shù)規(guī)范
- 2025年岳陽職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫附答案
評論
0/150
提交評論