python跨文件夾調(diào)用別的文件夾下py文件或參數(shù)方式詳解
摘要:
本文章主要介紹了python運行或調(diào)用另一個py文件或參數(shù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,請?zhí)岢鰜怼?/p>
第一章 運行另一個py文件
(1)在file_A.py中運行file_B.py文件,注意這里是運行,不是引用
import os os.system("python file_B.py para_a1 para_a2") #其他形式 os.system("python file_B.py %s" % para_A) os.system("python file_B.py " + para_A)
需要注意文件路徑的寫法,在docker中運行文件,文件名前面需要加/,如os.system("python /file_B.py")
(2)file_B.py使用file_A.py傳遞的參數(shù)
import sys print(sys.argv) #由打印的結(jié)果可知,sys.argv[1:]是命令行傳遞的參數(shù),sys.argv[0]是命令行運行的文件名 para_B = sys.argv[1]
(3) 引用另一個py文件中的變量或者方法
from file_A import df_A
第二章 python調(diào)用自己寫的py文件
(1)同一個目錄下的文件
同一個目錄下直接寫import xx就好了,xx為自己要調(diào)用的模塊名字,雖然會有下劃線報錯,其實,沒有錯,仍然可以調(diào)用,這個下劃線可以忽略。
(2)不同目錄下的文件
不同路徑下的文件先要調(diào)用添加路徑sys.path.append(r"C:\xxx"),再做引用
import sys #首先,添加路徑,windows的路徑和linux的路徑符號不同\\,/,注意區(qū)別 #r是為了告訴python這是路徑,別#把\n等特殊組合給轉(zhuǎn)譯) sys.path.append(r"C:\xxx") #下面import就可以了 import a import b
(3)多個文件在多個目錄的調(diào)用
首先我們也可以多次寫sys.path.append(r"C:\xxx")來添加多個目錄,但是這樣有點麻煩,每次新建個工程可能就要加很多代碼去調(diào)用公共單元。
解決方法是添加一個空的__init__.py文件(用于定義包的屬性和方法,可以為空),表示這是一個包,比如這樣,聲明了aaa為一個包,a是內(nèi)部的方法。
也可以這樣,表示bbb是一個包,bb是bbb的子包,b是bb包的內(nèi)部的方法
如果你需要調(diào)用a.py與b.py:
import aaa.a import bbb.bb.b import ccc.c
如果你在c.py文件,想要調(diào)用a.py,b.py只需要用到步驟2的知識即可,比如
import sys #添加上級目錄 sys.path.append("..//") import aaa.a import bbb.bb.b
第三章 關(guān)于__init__.py的解釋
__init__.py作用是將文件夾變?yōu)橐粋€Python模塊,導入包時,事實上是導入了它的__init__.py文件
__init__.py 文件可以為空,但是也可以添加如下兩個功能
(1)初始化包中各個模塊,批量導入
pack包,配置__init__.py
1 2 | import a import b |
導入pack包
訪問__init__.py文件中的引用文件,需要加上包名
(2)__init__.py中的__all__,全部導入所聲明的模塊
此時導入pack包就相當于導入了a.py,b.py,c.py
pack包,配置__init__.py
1 | __all__ = ['a', 'b', 'c'] |
調(diào)用
1 | from pack import * |
第四章 關(guān)于pyc與pyo文件
pyc就是py編譯時生成的字節(jié)碼文件,以后每次導入都會執(zhí)行pyc,當py文件更新時pyc也會更新
如果解釋器添加-o命令,py編譯時會生成pyo文件,它相比pyc去掉了斷言(assert)、斷行號以及其他調(diào)試信息,運行速度更快
如果使用-OO選項,生成的pyo文件會忽略文檔信息
第五章 模塊導入時內(nèi)部的原理
(1)import可導入的對象可以是以下類型:
- 模塊文件(.py文件)
- C或C++擴展(已編譯為共享庫或DLL文件)
- 包(包含多個模塊)
- 內(nèi)建模塊(使用C編寫并已鏈接到Python解釋器中)
- 理解為后綴就是.py、.pyo、.pyc、.pyd、.so、.dll
(2)解釋器工作:
1.根據(jù)導入的文件名創(chuàng)建命名空間(用來訪問文件內(nèi)部屬性與方法)
2.在命名空間內(nèi)執(zhí)行源代碼
3.創(chuàng)建一個源代碼文件的對象,這個對象引用對應(yīng)的命名空間,管理模塊的內(nèi)部函數(shù)與變量
4.一個模塊可以多次導入,但是后面導入的模塊只執(zhí)行第三步
sys.modules可以打印出導入的模塊名與模塊對象的映射
(3)因此可以理解導入文件的三種方式:
import a.b
:把a.b導入全局命名空間,想要調(diào)用c方法需要a.b.cfrom a import b
:把b導入全局命名空間,b.cfrom a.b import c
:把b的屬性c直接導入命名空間
總結(jié)
到此這篇關(guān)于python跨文件夾調(diào)用別的文件夾下py文件或參數(shù)方式的文章就介紹到這了,更多相關(guān)python跨文件夾調(diào)用py文件或參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python調(diào)用C語言開發(fā)的共享庫方法實例
這篇文章主要介紹了Python調(diào)用C語言開發(fā)的共享庫方法實例,本文同時給出了C語言和Python調(diào)用簡單實例,需要的朋友可以參考下2015-03-03python調(diào)用Matplotlib繪制分布點圖
這篇文章主要為大家詳細介紹了python調(diào)用Matplotlib繪制分布點圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-10-10Python中將文件從一個服務(wù)器復制到另一個服務(wù)器的4種方法
Python中將文件從一個服務(wù)器復制到另一個服務(wù)器通常涉及到網(wǎng)絡(luò)傳輸,這個過程可以通過多種方式實現(xiàn),本文主要為大家介紹了4種常用方法,需要的可以參考下2024-10-10利用Pandas讀取文件路徑或文件名稱包含中文的csv文件方法
今天小編就為大家分享一篇利用Pandas讀取文件路徑或文件名稱包含中文的csv文件方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07Python調(diào)用騰訊云短信服務(wù)發(fā)送手機短信
這篇文章主要為大家介紹了Python調(diào)用騰訊云短信服務(wù)發(fā)送手機短信,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05