Ⅰ python 怎麼引用其他文件的類
在導入文件的時候,Python只搜索當前腳本所在的目錄,載入(entry-point)入口腳本運行目錄和sys.path中包含的路徑例如包的安裝地址。所以如果要在當前腳本引用其他文件,除了將文件放在和腳本同一目錄下,還有以下幾種方法,
1. 將文件所在位置添加到sys.path中
import sys
sys.path.insert(0, '/path/to/application/app/folder') # or sys.path.append('/path/to/application/app/folder')
import file
2. 在文件目錄下新建__init__.py文件然後調用文件
from application.app.folder.file import func_name
init.py文件
a).init.py文件的作用
該文件的主要作用使初始化Python包。如果目錄下麵包含了該文件,Python解釋器就會將該目錄當做一個包,下一步就可以使用import語句在別的.py腳本中引用該目錄下的文件。一個標准Python模塊的結構如下所示:
package/
__init__.py
file.py
file2.py
subpackage/
__init__.py
submole1.py
submole2.py
b). __init__文件可以為空但可以用來建立對包的需求。一般來說會在該文件中寫那些類,函數等需要被導入到包水平,從而可以被方便的引用。比如:如果file.py文件中有一個File類,在init.py文件中啥都沒寫時引用File類需要這樣操作:
from package.file import File
如果在__init__.py文件中將file導入包,那就在包水平可以直接引用File類:
# in your __init__.py
from file import File
# in your script
from package import File
此外,還需要注意的一點是__init__.py文件中的all變數。如果解釋器在__init__.py文件中觀察到了__all__變數,那麼在運行from package import *時就只會引入__all__變數中列出的那些模塊。例如:如果想在上述結構的只引入submole1模塊,那麼可以在subpackage/__init__.py文件中定義__all__ = ['submole1'],當引用subpackage時from subpackage import *就只引入了submole1模塊。
3. 將文件所在目錄添加到python的環境變數
export PYTHONPATH=$HOME/pathToYourScripts/:$PYTHONPATH
Ⅱ python 引用別的文件類
首先要你在文件夾B里放一個__init__.py的文件,
然後就可以在test.py中:
from .B.b import 類名
望採納!
Ⅲ python如何引用文件
with open('file','r') as f:
Ⅳ 請教Python關於找到文件並引用
一、Python查找模塊的路徑
運行Python應用或引用Python模塊,Python解釋器要有一個查找的過程。可以通過設置一個環境變數PYTHONPATH為Python增加一個搜索路徑,以方便查找到相關Python模塊(不同的操作系統環境變數的設置稍有不同,默認以下都是WIndows環境),這與眾多應用程序需要設置一個系統環境變數的道理是一樣的。在命令行中可以通過以下命令設置:
C:\Users\Administrator>set PYTHONPATH=E:/Project/Python/MoleAndPackage/
進入Python環境後可以,通過Python的sys.path屬性獲得當前搜索路徑的配置,可以看到之前我們設置的路徑已經在當前搜索路徑中了。
C:\Users\Administrator>pythonPython 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32Type "help", "right", "credits" or "license" for more information.>>> import sys>>> sys.path['', 'E:\\Project\\Python\\MoleAndPackage', 'C:\\Windows\\system32\\python27.zip', 'C:\\Python\\DLLs', 'C:\\Python\\lib', 'C:\\Python\\lib\\plat-win', 'C:\\Python\\lib\\lib-tk', 'C:\\Python', 'C:\\Python\\lib\\site-packages']>>>
也可以通過sys模塊的append方法在Python環境中增加搜索路徑。
>>> sys.path.append("E:\\Project\\Python\\MoleAndPackage2")>>> sys.path['', 'E:\\Project\\Python\\MoleAndPackage', 'C:\\Windows\\system32\\python27.zip', 'C:\\Python\\DLLs', 'C:\\Python\\lib', 'C:\\Python\\lib\\plat-win', 'C:\\Python\\lib\\lib-tk', 'C:\\Python', 'C:\\Python\\lib\\site-packages', 'E:\\Project\\Python\\MoleAndPackage2']>>>
二、Python中的模塊和包
前面已經提到每個.py文件都是可以認為是一個Python模塊,.py文件中可以包含類、方法、變數和常量(Python還沒有嚴格意義上的常量,只是約定大寫的變數作為常量),文件內也可以直接寫所有的邏輯語句並在載入時從上之下直接執行,這與其他解釋型語言是類似的。例如我們選擇在文件夾MoleAndPackage中創建一個文本文件person.py文件即創建了一個簡單的Python模塊,其內容如下:
# -*- coding: utf-8 -*-ID = 1name = "This person"print namedef say(something):print name,'says', something
那麼接下來我們就可以在Python環境中執行person.py。我們可以直接像執行一個批處理文件那樣執行person.py,在cmd命令行輸入:
Python E:/Project/Python/MoleAndPackage/person.py
本質上任何一個Python應用的入口模塊都是這樣被執行的(像C#和Java中的main函數),但是引用一個模塊,就要建立運行它的上下文環境。我們先設置一個環境變數PYTHONPATH,以便Python解釋器找到person.py模塊,然後import person模塊,即可訪問其中的方法或變數。
C:\Users\Administrator>pythonPython 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32Type "help", "right", "credits" or "license" for more information.>>> import personThis person>>> person.say("hello")This person says hello>>> print person.nameThis person>>>
Python需要去某些固定的路徑下去查找Python模塊,上面我們設置在MoleAndPackage中查找。但是這些路徑下也是有目錄層次的,Python是如何查找子目錄中的模塊呢?特別是引用第三方包時,我們也需要知道一定的層次關系。實際上,Python通過目錄和文件構建包結構,並且包是層層嵌套的,和目錄層層嵌套是一樣的,這樣就構成了包內的訪問路徑(或者命名空間,也可以說Python應用的命名空間與其目錄和文件結構是對應了,似乎缺少了一些靈活,但也更簡單)。例如我們在MoleAndPackage文件夾下,創建一個文件夾animal,裡面創建一個文本文件pet.py,其內容如下:
# -*- coding: utf-8 -*-ID = 2name = "This pet"print namedef run(somewhere):print name,'runs', somewhere
那麼如何引用pet.py這個模塊呢?按照Python的約定,需要在animal文件夾中創建名為__init__.py的空文本文件,以標識animal文件夾是一個包。倘若animal文件夾內還有文件夾作為包,也必須包含__init__.py文件。這樣就層層標識了訪問的路徑。
>>> import animal.petThis pet>>> print animal.pet.nameThis pet>>> animal.pet.run("everywhere")This pet runs everywhere>>>
或者使用from關鍵字直接導入模塊內的屬性或方法:
>>> from animal.pet import name,run>>> print nameThis pet>>> run("everywhere")This pet runs everywhere>>>
三、Python模塊間引用
簡答來說,只要Python模塊在其執行環境配置的搜索路徑中,並且其所在位置是包結構的一部分,那麼我們就可以引用該模塊。上文已經提供了模塊引用的基本示例。只不過模塊間引用時import語句是寫在模塊文件中,我們修改person.py模塊的代碼。
1、from、import和as
# -*- coding: utf-8 -*-ID = 1name = "This person"print namedef say(something):print name,'says', somethingfrom animal.pet import name as pet_name, run as pet_rundef have():print name,'has', pet_name
import語句可以寫在文檔中的任何位置,甚至if語句中,以便更好的控制模塊引用。還可以通過as語句,使用另一個變數名進行引用,以避免變數名沖突。>>> import personThis personThis pet>>> print person.nameThis person>>> print person.pet_nameThis pet>>> person.have()This person has This pet>>>
Ⅳ Python怎麼導入文件
Python的import包含文件功能就跟PHP的include類似,但更確切的說應該更像是PHP中的require,因為Python里的import只要目標不存在就報錯程序無法往下執行。要包含目錄里的文件,PHP中只需要給對路徑就OK。Python中則不同,下面來看看這個例子。
目錄結構:
重新執行a.py,一切OK!
Ⅵ 求助一下,python如何調用另一個py文件
這不就相當於引用自定義的模塊嗎,使用import導入
例如A.py
def draw(p){
....
}
在B.py中引用draw,假設A,B文件同目錄
from A import draw
draw(param)
Ⅶ python 怎麼引入上上級目錄的文件
importsys,os
sys.path.append(os.path.abspath(os.path.dirname(__file__)+'/'+'../../'))
importXXX##你想要調用的文件
首先調用sys和os。然後通過第二行找到當前執行文件所謂目錄,並將目錄返回到../../層,最後調用上上級目錄
Ⅷ python中需要引用文件名稱在哪
第一種:os.listdir
os.listdir() 方法用於返回指定的目錄下包含的文件或子目錄的名字的列表。這個列表以字母順序。其得到的是僅當前路徑下的文件名,不包括子目錄中的文件,如果需要得到所有文件需要遞歸。 它也不包括 '.' 和 '..' 即使它在目錄中。
語法格式為:os.listdir(path)
舉例:def list_dir(file_dir):
'''
通過 listdir 得到的是僅當前路徑下的文件名,不包括子目錄中的文件,如果需要得到所有文件需要遞歸
'''
print'\n\n<><><><><><> listdir <><><><><><>'
print "current dir : {0}".format(file_dir)
dir_list = os.listdir(file_dir)
for cur_file in dir_list:
# 獲取文件的絕對路徑
path = os.path.join(file_dir, cur_file)
if os.path.isfile(path): # 判斷是否是文件還是目錄需要用絕對路徑
print "{0} : is file!".format(cur_file)
if os.path.isdir(path):
print "{0} : is dir!".format(cur_file)
list_dir(path) # 遞歸子目錄
第二種:os.walk
os.walk() 方法用於通過在目錄樹中遊走輸出在目錄中的文件名,向上或者向下。是一個簡單易用的文件、目錄遍歷器,可以幫助我們高效的處理文件、目錄方面的事情。
語法格式為:os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])
方法參數說明:top:要遍歷的目錄的路徑
topdown:可選,如果為 True,則優先遍歷 top 目錄,以及 top 目錄下的每一個子目錄,否則優先遍歷 top 的子目錄,默認為 True
onerror: 可選, 需要一個 callable 對象,當 walk 異常時調用
followlinks:可選, 如果為 True,則會遍歷目錄下的快捷方式(linux 下是 symbolic link)實際所指的目錄,默認為 False
args:包含那些沒有 '-' 或 '--' 的參數列表
返回值: 三元組 (root, dirs, files)
root :所指的是當前正在遍歷的目錄的地址
dirs :當前文件夾中所有目錄名字的 list (不包括子目錄)
files :當前文件夾中所有的文件 (不包括子目錄中的文件)
舉例:def work_dir(file_dir):
print'\n\n<><><><><> work dir <><><><><>'
for root, dirs, files in os.walk(file_dir):
print'\n========================================'
print "root : {0}".format(root)
print "dirs : {0}".format(dirs)
print "files : {0}".format(files)
for file in files:
try:
print'-----------------------------------'
file_name = os.path.splitext(file)[0]
file_suffix = os.path.splitext(file)[1]
file_path = os.path.join(root, file)
file_abs_path = os.path.abspath(file)
file_parent = os.path.dirname(file_path)
print "file : {0}".format(file)
print "file_name : {0}".format(file_name)
print "file_suffix : {0}".format(file_suffix)
print "file_path : {0}".format(file_path)
print "file_abs_path : {0}".format(file_abs_path)
print "file_parent : {0}".format(file_parent)
except Exception, e:
print "Exception", e
找到文件目錄,對於Python初學者來說算是一個簡單操作了,希望本文能對Python小白有所幫助。
Ⅸ 怎麼引用另一個python文件
如果是在同一個 mole中(也就是同一個py 文件里),直接用就可以
如果在李飢運不肢伍同的mole里哪梁,例如
a.py里有 class A:
b.py 里有 class B:
如果你要在class B里用class A 需要在 b.py的開頭寫上 from a import A!
Ⅹ 如何調用另一個python文件中的代碼
python
模塊
模塊讓你能夠有邏輯地組織你的python代碼段。
把相關的代碼分配到一個
模塊里能讓你的代碼更好用,更易懂。
模塊也是python對象,具有隨機的名字屬性用來綁定或引用。
簡單地說,模塊就是一個保存了python代碼的文件。模塊能定義函數,類和變數。模塊里也能包含可執行的代碼。
例子
一個叫做aname的模塊里的python代碼一般都能在一個叫aname.py的文件中找到。下例是個簡單的模塊support.py。
def
print_func(
par
):
print
"hello
:
",
par
return
import
語句
想使用python源文件,只需在另一個源拆氏文件里洞碼執行import語句,語法如下:
import
mole1[,
mole2[,...
molen]
當解釋器遇到import語句,如果模塊在當前的搜索路徑就會被導入。
搜索路徑是一個解釋器會先進行搜索的所有目錄的列表。如想要導入模塊support.py,需要把命令放在腳本的頂端:
#!/usr/bin/python
#
-*-
coding:
utf-8
-*-
#
導入模塊
import
support
#
現在可以調納御哪用模塊里包含的函數了
support.print_func("zara")