




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第python運行或調用另一個py文件或參數(shù)方式目錄python運行或調用另一個py文件或參數(shù)1.運行另一個py文件2.引用另一個py文件中的變量python調用自己寫的py文件python如何調用自己寫的py文件呢?如果是不同目錄怎么調用呢?如果需要調用的多個文件在多個目錄呢?關于__init__.py的解釋關于sys.path的解釋關于pyc與pyo文件模塊導入時內部的原理
python運行或調用另一個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)
#由打印的結果可知,sys.argv[1:]是命令行傳遞的參數(shù),sys.argv[0]是命令行運行的文件名
para_B=sys.argv[1]
2.引用另一個py文件中的變量
fromfile_Aimportdf_A
python調用自己寫的py文件
python如何調用自己寫的py文件呢?
同一個目錄下直接寫importxx就好了,xx為自己要調用的模塊名字,雖然會有下劃線報錯,其實,沒有錯,仍然可以調用,之前一直都被報錯嚇住了
如果是不同目錄怎么調用呢?
那就把需要調用的那個目錄添加一下,比如調用C:\xxx\a.py
那就添加一下c:\xxx路徑(windows的路徑和linux的路徑符號不同\\,/,注意區(qū)別)
然后importa就行了,前面寫r是為了告訴python這是路徑,別把\n等特殊組合給轉譯了,
如果同c:\xxx目錄下有多個文件,比如a.py,b.py等等,也可以直接導入了,因為這是告訴python去這個文件夾尋找包文件
importsys
sys.path.append(r"C:\xxx")
importa
importb
如果需要調用的多個文件在多個目錄呢?
當然可以多次寫sys.path.append(rC:\xxx)來添加多個目錄,
但是這樣很麻煩,如果文件距離很近,比如這樣就沒有必要寫
解決方法是添加一個空的__init__.py文件(用于定義包的屬性和方法,可以為空),表示這是一個包,比如這樣,聲明了aaa為一個包,a是內部的方法
也可以這樣,表示bbb是一個包,bb是bbb的子包,b是bb包的內部的方法
然后如果你需要調用a.py與b.py,就可以
testcode.py
importaaa.a
importbbb.bb.b
importccc.c
如果你在c.py文件,想要調用a.py,b.py只需要用到步驟2的知識即可,比如
c.py
importsys
#添加上級目錄
sys.path.append("..//")
importaaa.a
importbbb.bb.b
關于__init__.py的解釋
作用是將文件夾變?yōu)橐粋€Python模塊,導入包時,事實上是導入了它的__init__.py文件
__init__.py文件可以為空,但是也可以添加如下兩個功能
1.初始化包中各個模塊,批量導入
pack包,配置__init__.py
importa
importb
導入pack包
訪問__init__.py文件中的引用文件,需要加上包名
importpack
print(pack.a,pack.b)
2.__init__.py中的__all__,全部導入所聲明的模塊
此時導入pack包就相當于導入了a.py,b.py,c.py
pack包,配置__init__.py
__all__=['a','b','c']
調用
frompackimport*
關于sys.path的解釋
當導入模塊時,解釋器按照sys.path列表中的目錄順序來查找文件。
print(sys.path)
會打印出一個list列表,表示引入文件時查找的文件目錄,第一個元素空字符表示當前目錄
關于pyc與pyo文件
pyc就是py編譯時生成的字節(jié)碼文件,以后每次導入都會執(zhí)行pyc,當py文件更新時pyc也會更新
如果解釋器添加-o命令,py編譯時會生成pyo文件,它相比pyc去掉了斷言(assert)、斷行號以及其他調試信息,運行速度更快
如果使用-OO選項,生成的pyo文件會忽略文檔信息
模塊導入時內部的原理
import可導入的對象可以是以下類型:
模塊文件(.py文件)C或C++擴展(已編譯為共享庫或DLL文件)包(包含多個模塊)內建模塊(使用C編寫并已鏈接到Python解釋器中)理解為后綴就是.py、.pyo、.pyc、.pyd、.so、.dll
解釋器工作:
1.根據(jù)導入的文件名創(chuàng)建命名空間(用來訪問文件內部屬性與方法)
2.在命名空間內執(zhí)行源代碼
3.創(chuàng)建一個源代碼文件的對象,這個對象引用對應的命名空間,管理模塊的內部函數(shù)與變量
4.一個模塊可以多次導入,但是后面導入的模塊只執(zhí)行第三步
sys.modules可以打印出導入的模塊名與模塊對象的映射
因此可以理解導入文件的三種方式:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡視頻內容審核補充合同
- 法院執(zhí)行法拍房優(yōu)先購買權放棄及補償協(xié)議
- 兒童友好購物中心樓層委托經(jīng)營管理合同
- 氣管切開康復護理
- Part3-4 Unit3 Internship課件-【中職專用】高一英語(高教版2021基礎模塊2)(2023修訂版)
- 遺產(chǎn)繼承管理合同(2篇)
- 2025版高考地理一輪復習專題八區(qū)域可持續(xù)發(fā)展高頻考點72森林開發(fā)和生物多樣性減少練習含解析
- 2025版高考化學一輪復習課后限時集訓31醛羧與酯含解析新人教版
- 護理案例精髓解析
- 數(shù)控技術應用培訓體系
- 2024年5月26日河南省事業(yè)單位聯(lián)考《職業(yè)能力測試》試題
- 2025年高考作文專練(25道真題+審題立意+范文)- 2025年高考語文作文備考總復習
- 大學生創(chuàng)新創(chuàng)業(yè)基礎學習通超星期末考試答案章節(jié)答案2024年
- 2023年山東省日照市生物中考真題(解析版)
- 人教版PEP英語六年級下冊Unit2單元教學設計
- 安徽省宿州市泗縣2025屆初三一模試題(物理試題文)試題含解析
- 拖拉機買賣合同協(xié)議書(2024版)
- 一廠多租(廠中廠)廠區(qū)安全生產(chǎn)管理標準
- 2024年甘肅高考生物試卷試題真題及答案詳解(精校打印版)
- 月嫂住家合同協(xié)議書
- JBT 14745-2024《鎂合金壓鑄熔爐 安全要求》
評論
0/150
提交評論