python運行或調用另一個py文件或參數(shù)方式_第1頁
python運行或調用另一個py文件或參數(shù)方式_第2頁
python運行或調用另一個py文件或參數(shù)方式_第3頁
python運行或調用另一個py文件或參數(shù)方式_第4頁
python運行或調用另一個py文件或參數(shù)方式_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論