為實(shí)現(xiàn)“按名存取”,必須建立文件名與輔存空間中物理地址的對應(yīng)關(guān)系,體現(xiàn)這種對應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)稱為文件目錄。文件目錄表目至少要包含文件名、文件的類型、文件的長度、訪問權(quán)限、建立時間、訪問時間和文件存儲地址等內(nèi)容。通過前面一章的介紹,我們已經(jīng)知道在文件信息中已經(jīng)包含了文件名、文件類型訪問權(quán)限等信息,而存儲地址的信息則包含在目錄信息中。

創(chuàng)新互聯(lián)是專業(yè)的平谷網(wǎng)站建設(shè)公司,平谷接單;提供網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行平谷網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!
16.1路徑
路徑通常用一個字符串來表示,可以按照路徑信息定位到一個目錄或文件。如:“C:UsersAdministratorPictures1.jpg”這個信息可以非常方便的找到這個圖片文件,“C:UsersAdministratorPictures”這個信息可以幫助我們找到更多的圖片文件。
這里所說的“路徑”和上網(wǎng)時碰到的“地址”含義比較相似,互聯(lián)網(wǎng)就相當(dāng)于將個人電腦可以訪問的范圍擴(kuò)大了,互聯(lián)網(wǎng)中的地址也是對應(yīng)某一個存儲空間的路徑,按照地址可以訪問互聯(lián)網(wǎng)上的信息,就如同按照路徑可以找到計算機(jī)中的文件一樣。
在Python中,可以導(dǎo)入 os模塊 來進(jìn)行目錄操作。
1、獲取當(dāng)前工作目錄getcwd()函數(shù)
例:
import os
print(os.getcwd())
運(yùn)行結(jié)果:
C:UsersAdministratorAppDataLocalProgramsPythonPython38
這個路徑是當(dāng)前Python IDLE所在的地址。
2、獲取文件的絕對路徑abspath()函數(shù)
abspath()函數(shù)是os模塊的子模塊path提供的一個函數(shù)。用法舉例如下:
import os
print(os.path.abspath(r'test.txt'))
運(yùn)行結(jié)果:
C:UsersAdministratorAppDataLocalProgramsPythonPython38 est.txt
16.2 目錄操作類函數(shù)
1、判斷目錄是否存在exists()函數(shù)
exists()函數(shù)是os模塊的子模塊path中的函數(shù)。使用方法舉例如下:
import os
print(os.path.exists(r'C:UsersAdministratorPictures1.jpeg'))
輸出結(jié)果:
True
2、創(chuàng)建目錄mkdir()函數(shù)和makedirs()函數(shù)
mkdir()函數(shù)和makedirs()函數(shù)都是由os模塊提供的,下面舉例說明用法和區(qū)別。
例1:
import os
path='d:test'
if not os.path.exists(path):
os.makedirs(path)
print('該文件目錄創(chuàng)建成功!')
如果目錄d: est已存在,則不再創(chuàng)建;若不存在,則創(chuàng)建。
例2:
import os
path='d:testtest1test11'
if not os.path.exists(path):
os.makedirs(path)
print('該文件目錄創(chuàng)建成功!')
雖然目錄d: est已存在,但可以在其下繼續(xù)創(chuàng)建子目錄。上面的代碼可以成功地創(chuàng)建d: est est1 est11目錄。
mkdir()函數(shù)和makedirs()函數(shù)用法基本一樣,不同之處在于mkdir()函數(shù)只能能創(chuàng)建一級目錄。
3、刪除目錄函數(shù)rmdir()函數(shù)
rmdir()函數(shù)是由os模塊提供的。
例如:通過上面的例子已經(jīng)建立了d: est est1 est11目錄,現(xiàn)在去刪除子目錄test11(此子目錄為空目錄),代碼如下:
import os
os.rmdir('d:testtest1test11')
如果要刪除的目錄非空(其下還包含有文件或文件夾),則不能刪除,并且出現(xiàn)Windows文件操作錯誤的提示(Python是調(diào)用操作系統(tǒng)命令完成文件和目錄操作的)。譬如d: est目錄下含有有子目錄,則不能對其進(jìn)行如下刪除操作。
import os
os.rmdir('d:test')
此時,會出現(xiàn)如下錯誤提示:
Traceback (most recent call last):
File "C:/Users/zym/AppData/Local/Programs/Python/Python39/4.py", line 10, in
os.rmdir('d:test')
OSError: [WinError 145] 目錄不是空的。: 'd:test'
4、刪除非空目錄函數(shù)rmtree()函數(shù)
rmtree()函數(shù)是由Python內(nèi)置的標(biāo)準(zhǔn)模塊shutil提供的,可以刪除目錄及目錄下的文件和子目錄。如刪除d: est目錄及其下的子目錄和文件,可用如下代碼:
import shutil
shutil.rmtree('d:test')
5、遍歷目錄walk()函數(shù)
walk()函數(shù)是由os模塊提供的。
語法格式:
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
其中,top是所要遍歷的目錄的地址;topdown為可選參數(shù),為 True時自上而下遍歷 目錄,為False時自下而上遍歷目錄,默認(rèn)值為True;onerror為可選參數(shù),用于指定異常處理方式,默認(rèn)為忽略;followlinks為可選參數(shù),如果為 True,則會遍歷目錄下的快捷方式(linux 下是軟連接 symbolic link )實(shí)際所指的目錄(默認(rèn)關(guān)閉),如果為 False,則優(yōu)先遍歷 top 的子目錄。
該函數(shù)的返回值為一個三元組(root,dirs,files)。root 所指的是當(dāng)前正在遍歷的這個文件夾的本身的地址;dirs 是一個 list ,內(nèi)容是該文件夾中所有的目錄的名字(不包括子目錄);files 同樣是 list , 內(nèi)容是該文件夾中所有的文件(不包括子目錄)。
例:遍歷d: est目錄及其子目錄下的所有子目錄和文件:
d: est目錄及其下的子目錄和文件
import os
path='d:test'
tups=os.walk(path) # 函數(shù)walk()的返回值為三元組
for root,dirs,files in tups: # 遍歷這個三元組
for name in dirs: #遍歷存放目錄值的元組
print('dir:',os.path.join(root,name))
for name in files: #遍歷存放文件名值的元組
print('file:',os.path.join(root,name))
運(yùn)行結(jié)果如下:
dir: d: est est1
dir: d: est est1 est11
dir: d: est est1新建文件夾
file: d: est est1新建文本文檔.txt
file: d: est est1 est11新建文本文檔.txt
J2EE里面的stub是這樣說的:為屏蔽客戶調(diào)用遠(yuǎn)程主機(jī)上的對象,必須提供某種方式來模擬本地對象,這種本地對象稱為存根(stub),存根負(fù)責(zé)接收本地方法調(diào)用,并將它們委派給各自的具體實(shí)現(xiàn)對象。
stub替代子模塊(某些特定功能模塊)的模擬函數(shù)或模擬類。
在分布式對象中代表著客戶端對象,承擔(dān)著通信的職責(zé)。在VC++環(huán)境中做測試的模擬函數(shù),并可以用stub指令指定DOS程序。
由于stub就是用來代替所測的子模塊,故而它不能為空
####在分布式計算環(huán)境中:
存根代表參與分布式對象的通信的客戶端側(cè)對象。
存根擔(dān)任分布式對象通信的角色。
存根作為一個網(wǎng)關(guān),客戶端對象和服務(wù)器端對象,通過它進(jìn)行路由所有傳出請求。存根包裝客戶端對象的功能,并通過添加網(wǎng)絡(luò)邏輯保證了可靠的客戶端和服務(wù)器之間的通信通道。可以寫上去的存根,手動或自動生成,這取決于所選擇的通信協(xié)議。
的存根是負(fù)責(zé):
向服務(wù)器發(fā)起通信骨架
翻譯從調(diào)用者調(diào)用對象
編組的參數(shù)
通知該呼叫應(yīng)該被調(diào)用的骨架
在網(wǎng)絡(luò)上傳遞參數(shù)的骨架
從骨架解組的響應(yīng)
通知該呼叫是完整的骨架
##模擬函數(shù)的使用 (Stub Function):
通常,此種暫時用來代替某些功能的模擬函數(shù)稱為 Stub,舉例而言,假如我們有一個裝置可以偵測溫度,但是該裝置的硬體尚未制作完成,此時,我們可以利用類似范例 1,9的函數(shù),暫時先傳回一個溫度值,以讓後續(xù)的程式可以順利的進(jìn)行測試,此種函數(shù)就稱為 Stub。
范例 1.0 用來取得溫度的 Stub 函數(shù)
void Thermometer() {
#ifdef _SIMULATOR _
return 28;
#else
#endif
}
利用 stub 函數(shù),可以讓未完成的系統(tǒng)得以進(jìn)行測試,其展現(xiàn)的行為類似於目標(biāo)系統(tǒng)。如此,程式開發(fā)人員可以在硬體未完成之前就進(jìn)行程式撰寫與測試工作,因此,能有效加快系統(tǒng)的開發(fā)時程,以使專案提早完成。
{ }.format()格式方法的一個指示器
例如:'{0:b}'.format(int(a,2)+int(b,2))
這個的意思就是 按照 2進(jìn)制 a + 2進(jìn)制b的格式 輸出
:?號后面帶填充的字符,只能是一個字符,不指定則默認(rèn)是用空格填充。
Python2.6 開始,新增了一種格式化字符串的函數(shù)?str.format(),它增強(qiáng)了字符串格式化的功能。
基本語法是通過?{}?和?:?來代替以前的?%?。
format 函數(shù)可以接受不限個參數(shù),位置可以不按順序。
str.format() 格式化數(shù)字的多種方法:
Python divmod() 函數(shù)
Python 內(nèi)置函數(shù)
python divmod() 函數(shù)把除數(shù)和余數(shù)運(yùn)算結(jié)果結(jié)合起來,返回一個包含商和余數(shù)的元組(a // b, a % b)。
在 python 2.3 版本之前不允許處理復(fù)數(shù)。
函數(shù)語法
divmod(a, b)
參數(shù)說明:
a: 數(shù)字
b: 數(shù)字
實(shí)例
^ -------異或xor
想復(fù)雜了?
^就是數(shù)學(xué)里的 那個判斷的異或符號
但是python里是按2進(jìn)制算的
就是說
10進(jìn)制的就按照轉(zhuǎn)換為2進(jìn)制 再轉(zhuǎn)換為10進(jìn)制來算
就是比如 5^3 =? 6?
因?yàn)椋?/p>
5 = 0101(b)
3 = 0011(b)
二進(jìn)制之后就是: 01100
再換回10進(jìn)制就是 6
deque是雙邊隊列,具有隊列和棧的性質(zhì)。相當(dāng)于可以在兩端操作的list。
以下是deque的常用方法:
數(shù)組初始化? = [None for _in range(rowNum)]
Python zip() 函數(shù)
zip() ?函數(shù)用于將可迭代的對象作為參數(shù),將對象中對應(yīng)的元素打包成一個個元組,然后返回由這些元組組成的列表。
如果各個迭代器的元素個數(shù)不一致,則返回列表長度與最短的對象相同,利用 * 號操作符,可以將元組解壓為列表。
res?=?[a?+?b?for?a,?b?in?zip([0]?+?res,?res?+?[0])]
這句琢磨了半天
感覺應(yīng)該跟三元表達(dá)式一樣是個倒裝句
但是其實(shí)應(yīng)該是個省略句。。。
1、python自帶punctuation包,可以消除所有中文標(biāo)點(diǎn)符號。
Python itertools模塊combinations方法
itertools模塊combinations(iterable, r)方法可以創(chuàng)建一個迭代器,返回iterable中所有長度為r的子序列,返回的子序列中的項按輸入iterable中的順序排序。
例1:
例2、實(shí)現(xiàn)一位數(shù)組的所有排列組合:
例3:利用chain.from_iterable方法將多個迭代器連接起來
(1)主程序main.py與模塊程序mod1.py在同一目錄下。
--src
|--mod1.py
|--main.py
直接在main.py中導(dǎo)入模塊mod1.py,即 import mod1 或 from mod1 import *
(2)主程序main.py所在目錄是模塊程序mod.py所在目錄的父目錄。
--src
|--mod1.py
|--main.py
---mod2
?|--mod2.py
先需要在mod2文件夾中建立空文件__init__.py
然后在main.py中導(dǎo)入模塊mod2.py,即 import mod2.mod2 或 from mod2.mod2 import *
(3)主程序main.py導(dǎo)入上層目錄中的模塊或其他目錄(平級)下的模塊。
--src
|--mod1.py
---mod2
?|--mod2.py
---sub
?|--main.py
先需要在mod2文件夾中建立空文件__init__.py,而src文件夾下不需要建立
然后進(jìn)入主程序main.py所在的路徑,執(zhí)行python main.py
在main.py中導(dǎo)入模塊mod2.py,即 import mod2.mod2 或 from mod2.mod2 import *
執(zhí)行前在main.py中加入:
import sys
sys.path.append("..")
import mod1
import mod2.mod2
網(wǎng)頁標(biāo)題:子模函數(shù)python 子模函數(shù)的性質(zhì)研究
網(wǎng)頁URL:http://chinadenli.net/article46/doghpeg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站排名、Google、動態(tài)網(wǎng)站、外貿(mào)建站、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)