闡述Python語(yǔ)言中的各種模塊
Python語(yǔ)言里的腳本語(yǔ)言中最豐富和強(qiáng)大的類(lèi)庫(kù),足以支持絕大多數(shù)日常應(yīng)用,在實(shí)際的程序開(kāi)發(fā)過(guò)程中,Python語(yǔ)言常被稱(chēng)為拼裝語(yǔ)言,這么說(shuō)的原因是因?yàn)樗軌蚝茌p松的把用其他語(yǔ)言制作的各種模塊。
本文將詳細(xì)解釋這些函數(shù)的使用方法。首先,我們介紹Python語(yǔ)言中類(lèi)似于Windows系統(tǒng)的dir命令的列出文件功能。然后描述如何測(cè)試一個(gè)文件名對(duì)應(yīng)的是一個(gè)標(biāo)準(zhǔn)文件、目錄還是鏈接。
以及提取文件大小和日期的方法。之后,我們還將介紹如何刪除文件和目錄。如何復(fù)制和刪除文件,以及怎樣將一個(gè)完整的文件路徑分解成目錄部分和文件名部分,最后,我們講解目錄的創(chuàng)建,以及如何在目錄樹(shù)中移動(dòng)目錄并處理文件。
一、顯示目錄內(nèi)容
當(dāng)我們想要列出當(dāng)前目錄中所有擴(kuò)展名為.jpg或.gif的文件的時(shí)候,就可以使用glob模塊來(lái)完成此項(xiàng)任務(wù),如下所示:
- import glob
- filelist = glob
上述代碼使用了glob函數(shù),該函數(shù)的參數(shù)為要顯示的文件類(lèi)型。在這里,文件類(lèi)型是通過(guò)類(lèi)似UNIX操作系統(tǒng)shell風(fēng)格通配符描述的一些文件名來(lái)指定的。這些通配符的使用方法,具體請(qǐng)參考fnmatch模塊的文檔,那里有具體的說(shuō)明和示例。為了顯示一個(gè)目錄中的全部文件,可以使用如下所示的os.listdir函數(shù):
- files = os.listdir(r’C:\hpl\scripting\src\py\intro’) #適用于 Windows
- files = os.listdir(’/home/hpl/scripting/src/py/intro’) # 適用于Unix
- # 跨平臺(tái)版本:
- files = os.listdir(os.path.join(os.environ[’scripting’],
- ’src’, ’py’, ’intro’))
- files = os.listdir(os.curdir) # 當(dāng)前目錄中的所有文件
- files = glob.glob(’*’) + glob.
二、測(cè)試文件類(lèi)型
我們知道,文件名、目錄名和鏈接名都是用一個(gè)字符串作為其標(biāo)識(shí)符的,但是給我們一個(gè)標(biāo)識(shí)符,我們?cè)撊绾未_定它所指的到底是常規(guī)文件文件名、目錄名還是鏈接名呢?這時(shí),我們可以使用os.path模塊提供的isfile函數(shù)、isdir函數(shù)和islink函數(shù)來(lái)達(dá)成我們的目標(biāo),如下所示:
- print myfile, ’是一個(gè)’,
- if os.path.isfile(myfile):
- print ’plain file’
- if os.path.isdir(myfile):
- print ’directory’
- if os.path.islink(myfile):
- print ’link’
- 您還可以查找文件的日期及其大小:
- time_of_last_access = os.path.getatime(myfile)
- time_of_last_modification = os.path.getmtime(myfile)
- size = os.path.getsize(myfile)
三、文件和目錄的刪除
若要?jiǎng)h除單個(gè)文件的話(huà),可以使用os.remove函數(shù),例如:os.remove(’mydata.dat’)。Os.remove的別名是os.unlink。不過(guò)后者跟傳統(tǒng)的UNIX操作系統(tǒng)以及Perl中清除文件的函數(shù)重名。我們可以使用下列方式來(lái)刪除一組文件,如所有以.jpg以及*.gif為擴(kuò)展名的文件:
- import stat
- myfile_stat = os.stat(myfile)
- size = myfile_stat[stat.ST_SIZE]
- mode = myfile_stat[stat.ST_MODE]
- if stat.S_ISREG(mode):
- print ’%(myfile)是一個(gè)常規(guī)文件,大小為 %(size)d 字節(jié)’ %\
- vars()
大家知道,只有當(dāng)Python目錄中內(nèi)容已經(jīng)被清空的時(shí)候,我們才可以使用rmdir命令來(lái)刪除該目錄。不過(guò),我們經(jīng)常想要?jiǎng)h除一個(gè)含有許多文件的目錄樹(shù),這時(shí)我們可以使用shutil模塊提供的rmtree函數(shù),如下所示:
- if isinstance(files, str): # files是個(gè)字符串嗎?
- files = [files] # 把files從字符串轉(zhuǎn)為列表
- if not isinstance(files, list): # files不是列表嗎?
- for file in files:
- if os.path.isdir(file):
- shutil.rmtree(file)
- elif os.path.isfile(file):
- os.remove(file)
Copytree的第三個(gè)參數(shù)規(guī)定對(duì)符號(hào)鏈接的處理,其中True表示保留符號(hào)鏈接;而False則意味著使用文件的物理副本替代符號(hào)鏈接。Python語(yǔ)言能夠很好地支持路徑名的跨平臺(tái)組成。
Os.path.join能使用正確的分界符(在UNIX和Mac OS X操作系統(tǒng)中使用/,在 Windows 上使用\)來(lái)聯(lián)接目錄和文件名,變量os.curdir和os.pardir分別表示當(dāng)前工作目錄及其父目錄。 像下面的UNIX操作系統(tǒng)命令
【編輯推薦】