您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)Python中怎么實(shí)現(xiàn)處理文件,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
一、顯示目錄內(nèi)容當(dāng)我們想要列出當(dāng)前目錄中所示:
origdir = os.getcwd() # 將當(dāng)前位置記下來(lái) newdir = os.path.join(os.pardir, ’mynewdir’) if not os.path.isdir(newdir): os.mkdir(newdir) # 或者os.mkdir(newdir,’0755’) os.chdir(newdir) ... os.chdir(origdir) # 返回原目錄 os.chdir(os.environ[’HOME’]) # 移到主目錄
上述代碼使用了glob函數(shù),該函數(shù)的參數(shù)為要顯示的文件類型。在這里,文件類型是通過(guò)類似UNIX操作系統(tǒng)shell風(fēng)格通配符描述的一些文件名來(lái)指定的。這些通配符的使用方法,具體請(qǐng)參考fnmatch模塊的文檔,那里有具體的說(shuō)明和示例。為了顯示一個(gè)目錄中的全部文件,可以使用如下所示的os.listdir函數(shù):
def checksize1(arg, dirname, files): for file in files: filepath = os.path.join(dirname, file) if os.path.isfile(filepath): size = os.path.getsize(filepath) if size > 1000000: sizesize_in_Mb = size/1000000.0 arg.append((size_in_Mb, filename)) bigfiles = [] root = os.environ[’HOME’] os.path.walk(root, checksize1, bigfiles) for size, name in bigfiles: print name, ’大小為’, size, ’Mb’
我們知道,文件名、目錄名和鏈接名都是用一個(gè)字符串作為其標(biāo)識(shí)符的,但是給我們一個(gè)標(biāo)識(shí)符,我們?cè)撊绾未_定它所指的到底是常規(guī)文件文件名、目錄名還是鏈接名呢?這時(shí),我們可以使用os.path模塊提供的isfile函數(shù)、isdir函數(shù)和islink函數(shù)來(lái)達(dá)成我們的目標(biāo)。
若要?jiǎng)h除單個(gè)文件的話,可以使用os.remove函數(shù),例如:os.remove(’mydata.dat’)。Os.remove的別名是os.unlink。不過(guò)后者跟傳統(tǒng)的UNIX操作系統(tǒng)以及Perl中清除文件的函數(shù)重名。我們可以使用下列方式來(lái)刪除一組文件,如所有以.jpg以及*.gif為擴(kuò)展名的文件:
def somefunc(arg, dirname, files): origdir = os.getcwd(); os.chdir(dirname) <do tasks> os.chdir(origdir) os.path.walk(root, somefunc, arg)
大家知道,只有當(dāng)目錄中內(nèi)容已經(jīng)被清空的時(shí)候,我們才可以使用rmdir命令來(lái)刪除該目錄。不過(guò),我們經(jīng)常想要?jiǎng)h除一個(gè)含有許多文件的目錄樹(shù),這時(shí)我們可以使用shutil模塊提供的rmtree函數(shù),如下所示:
def somefunc(arg, dirname, files): origdir = os.getcwd(); os.chdir(dirname) <do tasks> os.chdir(origdir) os.path.walk(root, somefunc, arg)
它實(shí)際上是過(guò)于嚴(yán)厲。我們需要的只是一個(gè)被遍歷的一個(gè)文件/目錄名序列。實(shí)際上,我們并不關(guān)心名稱是否存儲(chǔ)在一個(gè)列表、元組或者數(shù)值數(shù)組中,所以更好的測(cè)試應(yīng)該像下面這樣
看完上述內(nèi)容,你們對(duì)Python中怎么實(shí)現(xiàn)處理文件有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。