




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第python運行或調用另一個py文件或參數方式目錄python運行或調用另一個py文件或參數1.運行另一個py文件2.引用另一個py文件中的變量python調用自己寫的py文件python如何調用自己寫的py文件呢?如果是不同目錄怎么調用呢?如果需要調用的多個文件在多個目錄呢?關于__init__.py的解釋關于sys.path的解釋關于pyc與pyo文件模塊導入時內部的原理
python運行或調用另一個py文件或參數
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傳遞的參數
importsys
print(sys.argv)
#由打印的結果可知,sys.argv[1:]是命令行傳遞的參數,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的路徑符號不同\\,/,注意區別)
然后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的解釋
作用是將文件夾變為一個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編譯時生成的字節碼文件,以后每次導入都會執行pyc,當py文件更新時pyc也會更新
如果解釋器添加-o命令,py編譯時會生成pyo文件,它相比pyc去掉了斷言(assert)、斷行號以及其他調試信息,運行速度更快
如果使用-OO選項,生成的pyo文件會忽略文檔信息
模塊導入時內部的原理
import可導入的對象可以是以下類型:
模塊文件(.py文件)C或C++擴展(已編譯為共享庫或DLL文件)包(包含多個模塊)內建模塊(使用C編寫并已鏈接到Python解釋器中)理解為后綴就是.py、.pyo、.pyc、.pyd、.so、.dll
解釋器工作:
1.根據導入的文件名創建命名空間(用來訪問文件內部屬性與方法)
2.在命名空間內執行源代碼
3.創建一個源代碼文件的對象,這個對象引用對應的命名空間,管理模塊的內部函數與變量
4.一個模塊可以多次導入,但是后面導入的模塊只執行第三步
sys.modules可以打印出導入的模塊名與模塊對象的映射
因此可以理解導入文件的三種方式:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鈑金安全考試題及答案
- 安全技術試題及答案
- 安全管護培訓試題及答案
- 不良資產處置行業創新模式與市場拓展路徑研究報告
- 便利店智能支付與無感購物體驗研究報告(2025年)
- 門店運營課程培訓課件
- 中國南方地區課件
- 中國單一制課件
- 護理文書書寫規范
- 原發性肝癌護理課件
- 機械制圖-形成性任務4-國開(ZJ)-參考資料
- 2024年輸配電及用電工程職稱評審題庫-單選
- 三年級(下冊)西師版數學全冊重點知識點
- 第五章 消費金融資產證券化
- 云南省紅河市2025屆數學高一上期末統考試題含解析
- 奧沙利鉑超敏反應全程管理中國專家共識(2024年版)解讀
- 國家開放大學《管理信息系統》大作業參考答案
- 2024年河北理科高考成績排名一分一檔表
- 智聯eas測評題庫
- 浙江省杭州市余杭區2024年小升初語文試題及答案
- 實驗訓練2數據查詢操作
評論
0/150
提交評論