路徑修改
命令列怎麼檢視路徑,修改路徑:
模組實現#列印當前搜尋路徑
import sys
sys.path
sys.path
import os
os.getcwd()
os.chdir("c:\\www\\")
構建模組的初衷就是將一些同類的東西進行打包, 以免汙染全域性空間, 在python的模組裡, 對需要隱藏的屬性和函式都可以採用總結:推薦使用__all__
來實現,__all__
只給出列出想要公共介面和屬性, 當前前提是只使用from modu import *
來導入庫, 如果使用import modu
則會匯入所有的屬性; 如下面的模組」lot2html」(下面的**內容不重要):當在其它地方使用這個模組時, 可以使用#coding=utf-8
''' 定義了乙個模組,提供將log.txt轉換成html的格式
'''from ohtml import *
import re
oh = ohtml() #這是其它地方定義的乙個類
#這裡只公開cretasklog這個介面
__all__ = ["cretasklog"]
defdeallogstr
(line):
pass
def__parsetasklog
(logf):
pass
defcretasklog
(logf,htmlf,title):
''' 將測試log檔案建立html各式的檔案
:param logf: from log path and filename
:param htmlf: to log path and filename
:param title: html title
'''ostr,errstr,skpstr = __parsetasklog(logf)
f=open(htmlf,'w+')
htmlstr = oh.crehtml(ostr,title=title,errstr=errstr,skstr=skpstr)
f.write(htmlstr)
f.close()
from log2html import *
或者import log2html
,而這兩者存在區別,1.
imprt log2html
匯入時, 模組裡的所有函式都可以被呼叫, 也就是all對其沒有影響;2.
from log2html import *
則是優先處理了__all__
中的, 如果有該屬性則值提供__all__
裡面的屬性, 如這裡只能讀到cretasklog函式, 其它函式都被封裝; 奇怪的是, 網上的資料說如果沒有__all__
則會讀取所有不是以下劃線開頭的屬性, 而我這裡測試發現, 外部可以照樣訪問__parsetasklog
函式, 還不清楚什麼原因;
from log2html import *
和__al__
屬性達到封裝效果;
包處理
當前測試的包名為ohtml, 同名資料夾裡有總結: package的使用,__init__.py
和上面的」log2html.py」 等其他模組;這裡也主要分析包的封裝特性;
先在測試**裡文件裡加入路徑:
這時__init__裡面什麼也不寫, 用import sys
sys.path
import ohtml
或from ohtml import *
後,發現都找不到模組log2html,可見 對於包的匯入,必須在初始化文件裡加入想要匯出的模組資訊;在
__init__
裡面加上import log2html
後,可以正常訪問模組裡面的所有函式, 當然要加上ohtml的字首,如ohtml.log2html.cretasklog
在__init__
將上面的import log2html
改為__al__=["log2html"]
後,發現使用import ohtml是無法讀取到模組的, 只能使用from ohtml import*
才可以, 切此時可以訪問到log2html;模組的所有屬性, 好像沒有封裝;
__init__
是必須要新增所要匯出的模組的, 可以通過寫__al__
和 import … 來完成;
而這兩者之間的區別,目前還不是很清楚, 以後有機會再去拜讀下原始碼;
import 匯入操作制發生一次;對比要重新匯入則乙個del module後再操作
import是直接匯入整個內容, 操作的修改會修改記憶體中的整個module的資料;模組就是命名空間from 是到複製版本, 修改內容不會影響到原先記憶體中的module;
通過moud.__dict__.keys()
可以看到裡面的屬性(包含定義的一些變數 和一些本來就有的變數)
如:
reloadmoud.__file__
是路徑;
moud.__dco__
是說明字元
import moud
# do something
from imp import reload
reload(moud)
python 模組與包
模組與包 1.什麼是模組 在 python 中,乙個.py檔案就稱之為乙個模組 module 模組的優點 大大提高了 的可維護性 編寫 不必從零開始。當乙個模組編寫完畢,就可以被其他地方引用 2.匯入模組的幾種方式 4.模組的分類 1 內建模組 os,sys,dnspython,socket,tim...
python包與模組
python模組 py檔案就是模組 1.在同乙個工作目錄 呼叫其他模組裡面的方法一 import module 呼叫 module.function 注意 此時import module時,在執行當前 時,會先執行被import的module裡的 import module as m1 別名,類似w...
python模組與包
模組 在 python 中,乙個.py檔案就稱之為乙個模組 module 大大提高了 的可維護性 編寫 不必從零開始。當乙個模組編寫完畢,就可以被其他地方引用 建立乙個phello.py的檔案,輸出hello 在另乙個函式內匯入模組。包 如果不同的人編寫的模組名相同怎麼辦?為了避免模組名衝 突,py...