<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
(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傳遞的引數
import sys print(sys.argv) #由列印的結果可知,sys.argv[1:]是命令列傳遞的引數,sys.argv[0]是命令列執行的檔名 para_B = sys.argv[1]
from file_A import df_A
同一個目錄下直接寫import xx就好了,xx為自己要呼叫的模組名字,雖然會有下劃線報錯,其實,沒有錯,仍然可以呼叫,之前一直都被報錯嚇住了
那就把需要呼叫的那個目錄新增一下,比如呼叫C:xxxa.py
那就新增一下c:xxx路徑(windows的路徑和linux的路徑符號不同\,/,注意區別)
然後import a就行了,前面寫r是為了告訴python這是路徑,別把n等特殊組合給轉譯了,
如果同c:xxx目錄下有多個檔案,比如a.py,b.py等等,也可以直接匯入了,因為這是告訴python去這個資料夾尋找包檔案
import sys sys.path.append(r"C:xxx") import a import b
當然可以多次寫sys.path.append(r"C:xxx")來新增多個目錄,
但是這樣很麻煩,如果檔案距離很近,比如這樣就沒有必要寫
解決方法是新增一個空的__init__.py檔案(用於定義包的屬性和方法,可以為空),表示這是一個包,比如這樣,宣告了aaa為一個包,a是內部的方法
也可以這樣,表示bbb是一個包,bb是bbb的子包,b是bb包的內部的方法
然後如果你需要呼叫a.py與b.py,就可以
testcode.py
import aaa.a import bbb.bb.b import ccc.c
如果你在c.py檔案,想要呼叫a.py,b.py只需要用到步驟2的知識即可,比如
c.py
import sys #新增上級目錄 sys.path.append("..//") import aaa.a import bbb.bb.b
作用是將資料夾變為一個Python模組,匯入包時,事實上是匯入了它的__init__.py檔案
__init__.py 檔案可以為空,但是也可以新增如下兩個功能
1.初始化包中各個模組,批次匯入
pack包,設定__init__.py
import a import b
匯入pack包
存取__init__.py檔案中的參照檔案,需要加上包名
import pack print(pack.a,pack.b)
2.__init__.py中的__all__,全部匯入所宣告的模組
此時匯入pack包就相當於匯入了a.py,b.py,c.py
pack包,設定__init__.py
__all__ = ['a', 'b', 'c']
呼叫
from pack import *
當匯入模組時,直譯器按照sys.path列表中的目錄順序來查詢檔案。
print(sys.path)
會列印出一個list列表,表示引入檔案時查詢的檔案目錄,第一個元素空字元表示當前目錄
pyc就是py編譯時生成的位元組碼檔案,以後每次匯入都會執行pyc,當py檔案更新時pyc也會更新
如果直譯器新增-o命令,py編譯時會生成pyo檔案,它相比pyc去掉了斷言(assert)、斷行號以及其他偵錯資訊,執行速度更快
如果使用-OO選項,生成的pyo檔案會忽略檔案資訊
import可匯入的物件可以是以下型別:
直譯器工作:
1.根據匯入的檔名建立名稱空間(用來存取檔案內部屬性與方法)
2.在名稱空間內執行原始碼
3.建立一個原始碼檔案的物件,這個物件參照對應的名稱空間,管理模組的內部函數與變數
4.一個模組可以多次匯入,但是後面匯入的模組只執行第三步
sys.modules可以列印出匯入的模組名與模組物件的對映
因此可以理解匯入檔案的三種方式:
import a.b
:把a.b匯入全域性名稱空間,想要呼叫c方法需要a.b.cfrom a import b
:把b匯入全域性名稱空間,b.cfrom a.b import c
:把b的屬性c直接匯入名稱空間以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45