為實(shí)現(xiàn)“按名存取”,必須建立文件名與輔存空間中物理地址的對(duì)應(yīng)關(guān)系,體現(xiàn)這種對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)稱為文件目錄。文件目錄表目至少要包含文件名、文件的類型、文件的長(zhǎng)度、訪問權(quán)限、建立時(shí)間、訪問時(shí)間和文件存儲(chǔ)地址等內(nèi)容。通過前面一章的介紹,我們已經(jīng)知道在文件信息中已經(jīng)包含了文件名、文件類型訪問權(quán)限等信息,而存儲(chǔ)地址的信息則包含在目錄信息中。
10年積累的網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有任丘免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
16.1路徑
路徑通常用一個(gè)字符串來表示,可以按照路徑信息定位到一個(gè)目錄或文件。如:“C:UsersAdministratorPictures1.jpg”這個(gè)信息可以非常方便的找到這個(gè)圖片文件,“C:UsersAdministratorPictures”這個(gè)信息可以幫助我們找到更多的圖片文件。
這里所說的“路徑”和上網(wǎng)時(shí)碰到的“地址”含義比較相似,互聯(lián)網(wǎng)就相當(dāng)于將個(gè)人電腦可以訪問的范圍擴(kuò)大了,互聯(lián)網(wǎng)中的地址也是對(duì)應(yīng)某一個(gè)存儲(chǔ)空間的路徑,按照地址可以訪問互聯(lián)網(wǎng)上的信息,就如同按照路徑可以找到計(jì)算機(jī)中的文件一樣。
在Python中,可以導(dǎo)入 os模塊 來進(jìn)行目錄操作。
1、獲取當(dāng)前工作目錄getcwd()函數(shù)
例:
import os
print(os.getcwd())
運(yùn)行結(jié)果:
C:UsersAdministratorAppDataLocalProgramsPythonPython38
這個(gè)路徑是當(dāng)前Python IDLE所在的地址。
2、獲取文件的絕對(duì)路徑abspath()函數(shù)
abspath()函數(shù)是os模塊的子模塊path提供的一個(gè)函數(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)建一級(jí)目錄。
3、刪除目錄函數(shù)rmdir()函數(shù)
rmdir()函數(shù)是由os模塊提供的。
例如:通過上面的例子已經(jīng)建立了d: est est1 est11目錄,現(xiàn)在去刪除子目錄test11(此子目錄為空目錄),代碼如下:
import os
os.rmdir('d:testtest1test11')
如果要?jiǎng)h除的目錄非空(其下還包含有文件或文件夾),則不能刪除,并且出現(xiàn)Windows文件操作錯(cuò)誤的提示(Python是調(diào)用操作系統(tǒng)命令完成文件和目錄操作的)。譬如d: est目錄下含有有子目錄,則不能對(duì)其進(jìn)行如下刪除操作。
import os
os.rmdir('d:test')
此時(shí),會(huì)出現(xiàn)如下錯(cuò)誤提示:
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時(shí)自上而下遍歷 目錄,為False時(shí)自下而上遍歷目錄,默認(rèn)值為True;onerror為可選參數(shù),用于指定異常處理方式,默認(rèn)為忽略;followlinks為可選參數(shù),如果為 True,則會(huì)遍歷目錄下的快捷方式(linux 下是軟連接 symbolic link )實(shí)際所指的目錄(默認(rèn)關(guān)閉),如果為 False,則優(yōu)先遍歷 top 的子目錄。
該函數(shù)的返回值為一個(gè)三元組(root,dirs,files)。root 所指的是當(dāng)前正在遍歷的這個(gè)文件夾的本身的地址;dirs 是一個(gè) 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: # 遍歷這個(gè)三元組
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
strip()函數(shù)原型:string.strip(s[, chars]),它返回的是字符串的副本,并刪除前導(dǎo)和后綴字符。此函數(shù)只會(huì)刪除頭和尾的字符,中間的不會(huì)刪除。如果strip()的參數(shù)為空,那么會(huì)默認(rèn)刪除字符串頭和尾的空白字符(包括\n,\r,\t)。lstrip():去除左邊,rstrip():去除右邊。當(dāng)你傳的參數(shù)不管是“abc”還是abc的其他排列形式,這都不重要,重要的是函數(shù)只知道你要?jiǎng)h除的字符是”a”,”b”,”c”。函數(shù)會(huì)把你傳的參數(shù)拆解成一個(gè)個(gè)的字符,然后把頭尾的這些字符去掉!
os包的rmdir()函數(shù)可以用來刪除一個(gè)文件夾,但是文件夾必須是空的。一種可行的方法是讀取文件夾的文件列表,逐個(gè)刪除文件夾中的所有文件,然而文件夾中可能還有文件夾,因此這是一個(gè)遞歸的操作。\x0d\x0ashutil包rmtree()函數(shù)就實(shí)現(xiàn)了以上功能。shutil是一個(gè)高級(jí)文件操作的包,實(shí)現(xiàn)了文件及文件集合復(fù)制與刪除的功能。rmtree()函數(shù)接收非空文件夾的路徑這唯一一個(gè)參數(shù)。示例代碼如下:\x0d\x0aimport shutil\x0d\x0apath = 'g:\zhidao'\x0d\x0ashutil.rmtree(path)
無法刪除函數(shù)調(diào)用是指索引工作錯(cuò)誤。函數(shù)必須先定義,才能調(diào)用,否則會(huì)報(bào)錯(cuò)。Python是一種廣泛使用的解釋型、高級(jí)和通用的編程語言。Python由荷蘭數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究學(xué)會(huì)的GuidovanRossum創(chuàng)造,第一版發(fā)布于1991年,它是ABC語言的后繼者,也可以視之為一種使用傳統(tǒng)中綴表達(dá)式的LISP方言。
題主你好,
你在新建DataFrame的時(shí)候已經(jīng)指定了行索引用a,b,c,d來表示,
所以你在刪除的時(shí)候,如果要使用index來指定要?jiǎng)h除的行,則要使用a,b,c,d其中一個(gè), 如
df.drop('a',axis=0,inplace=True)
或者使用df.tail(1).index來表示倒數(shù)第1行:
df.drop(df.tail(1).index,axis=0,inplace=True)
-----
希望可以幫到題主, 歡迎追問.
我要糾正推薦答案中的說法!
del并不是用來“刪除引用指向的內(nèi)存空間”,python中的del和c++中的delete是完全兩個(gè)概念,不要誤人子弟。。
一般來講,del是用來刪除變量的引用的,例如a = 1; del a,這里a是對(duì)1這個(gè)值的引用(python中所有的變量都可視作引用),而del a就是刪除這一引用關(guān)系,也就是說,1不再被a這個(gè)變量引用了,同時(shí)a這個(gè)變量名也從變量表中剔除了。
如果還是不太清楚,我舉這個(gè)例子你就明白了:
a = object()
b = a
del a
print b
print a # 該句會(huì)報(bào)a未定義的異常
這段代碼中,a引用了一個(gè)新對(duì)象object(),而b=a使得b也引用了這個(gè)對(duì)象,a和b雖然是兩個(gè)變量,但它們引用的是同一個(gè)對(duì)象,有點(diǎn)類似于c++中的兩個(gè)指針指向同一個(gè)對(duì)象。
而后面del a僅僅只是把a(bǔ)這個(gè)變量對(duì)object()的引用刪掉了,同時(shí)a的變量名也失效了,但并不表示object()這個(gè)對(duì)象被刪除了,它還在,并且b還引用著它呢。從后面print b能正常輸出就可以看出這一點(diǎn)。
python的內(nèi)存釋放采用的是引用計(jì)數(shù)機(jī)制,也就是當(dāng)一個(gè)對(duì)象沒有任何引用它的變量了,那么它就會(huì)自動(dòng)被釋放,無需人工干預(yù)。
此外,del對(duì)于不同的對(duì)象也會(huì)有不同的功能,這取決于對(duì)象本身對(duì)__del__系統(tǒng)方法的實(shí)現(xiàn)。例如一個(gè)列表a = [1,2,3],del a[0]表示將列表的首項(xiàng)刪除,此時(shí)a就變成[2,3]了。如果是自定義的對(duì)象,那del的功能更是可以定義成你想要的任何樣子,詳情請(qǐng)參考python幫助中的__del__詞條。
當(dāng)前名稱:python函數(shù)刪除 python 刪除命令
標(biāo)題網(wǎng)址:http://jinyejixie.com/article8/dodogip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、商城網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)、虛擬主機(jī)、軟件開發(fā)、網(wǎng)站營(yíng)銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)