Python 跨.py文件調用自定義函數說明
0 前言
os.chdir() :用于改變當前python工作的目錄到指定的路徑
sys.path:是python搜索模塊的一個路徑集,為list,自定義的包可以把存放路徑加進去,之后直接調用包名就行了。
1 同一文件夾
一般當前的工作路徑是在搜索路徑里面,所以不用sys.path.append,如果調用包的時候報錯,先使用sys.path查看當前路徑在不在list里,不在list里加進去才能直接調用自定義包。
一個文件夾內有兩個 .py 文件:
exe101.pyFileWriteAbout.py
我們想在exe101.py文件內調用FileWriteAbout.py文件中的 任意 一個自定義函數。
假如調用FileWriteAbout.py文件中的函數writeList():
直接在exe101.py中輸入:
import FileWriteAbout # 導入另一個文件FileWriteAbout.writeList() #調用其中的函數名#或者下面這種,只是調用時省略py文件名容易導致不同包內的函數名字沖突from FileWriteAbout import *writeList() #直接寫函數名
ps:
如果只涉及被調用py文件中的一個具體函數
就可以將調入形式寫成:
from FileWriteAbout import writeListwriteList()
2 不同文件夾下
兩個py文件不再一個目錄的情況下
2.1 用append將待調用文件路徑加入搜索list
import syssys.path.append(r'D:MathElectricpythonexercises') # 待引用的py文件路徑加到了搜索列表里import FileWriteAbout # py 文件名FileWriteAbout.writeList() # 具體函數
2.2 使用imp包
導入imp包:
import imp
AA = imp.load_source(name,pathname[,file])
將源py文件pathname導入到名字為name的模塊中,name可以是自己定義。
例如:
import imp # 導入CC = imp.load_source(’MM’,r’D:MathElectricpythonexercisesFileWriteAbout.py’)
使用時:
方法(1):直接使用
CC.writeList()
方法(2):導入別名使用
import MMMM.writeList()
3 spyder使用相對路徑讀取文件
絕對路徑讀取文件沒有問題。
data = pd.read_excel(r'D:/project/UCIpowerPre/CCPP/Folds5x2_pp.xlsx')
使用spyder寫代碼的時候想使用相對路徑直接讀數據,
data = pd.read_excel(r'CCPP/Folds5x2_pp.xlsx')
發現報錯。
其實就是代碼編輯的工作路徑和數據路徑不對應。
我們可以把工作路徑切換到待讀取文件所在的位置。
或者在spyder右上角把當前的工作路徑改一下。
import os os.chdir(r'D:/project/UCIpowerPre')
重點區分這幾個路徑的區別:
當前的工作路徑
py文件包的搜索路徑
數據文件所在路徑
補充知識:python只引入模塊并不能直接調用該模塊的函數
如下圖:
這里只引入了recognizer模塊,沒有直接引入其函數,會報錯name ’XXX’ is not defined
若想頻繁使用某個函數,可以將它賦值給一個本地變量
如:
predict = recognizer.predictclean_captcha = recognizer.clean_captchaget_captcha = recognizer.get_captcha
以上這篇Python 跨.py文件調用自定義函數說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。
相關文章:
