Day08葫蘆娃救爺爺
葫蘆娃去救爺爺,在洞口遇到了一個小機器人。它對葫蘆娃說,它是這個洞的管家(os模塊管理目錄和文件),並告訴葫蘆娃這個洞的名字叫溫豆思洞,簡稱牛頭洞(# print(os.name) )。它領著葫蘆娃進入 洞內,第一個洞大廳裡掛著很多千奇百怪的東西,小機器人告訴葫蘆娃這些東西掛在大廳是為了取用方便(environ:返回當前操作系統中所有的環境變量以及其內容,以鍵值對的形式進行存儲管理print(os.environ)),小機器人把把這些東西的名字和地址打印到一個字典上,送給葫蘆娃。
通過大廳往裡走,這時突然有個寵物蛋落到葫蘆娃手裡,小機器人告訴葫蘆娃,寵物蛋能告訴你當前正在運行的東西的完整的路徑(print(os.getcwd())返回當前正在被執行的文件的絕對路徑)。葫蘆娃將它揣到口袋裡。通道兩邊有一些箱子,箱子上貼著一張紙,裡面詳細寫著箱子裡的小箱子和東西的名字,但沒有小箱子裡的東西名字。(listdir(path):將path路徑下的子目錄名和文件名以字符串類型保存到列表中返回print(os.listdir(r’D:\python1809\day06’)))。再往前走,過道兩邊分別有個小棉褲和大棉褲在制作箱子。小棉褲只能造一個箱子(os.mkdir(r’D:\python1809\day08\hello1’)創建單層目錄,不能級聯創建目錄),大棉褲可以一次性造很多箱子套箱子(os.makedirs(r’bb\cc\dd’)創建多級目錄,也可以創建單層目錄)。小棉褲後面還有個粉碎機,它上面有個箱子的標志,它可以把不要的小箱子直接粉碎掉,不留痕跡(rmdir(path):刪除單層目錄,不能級聯刪除目錄)。大棉褲旁邊還有個大粉碎機,同樣可以將大箱子粉碎掉(removedirs(path):刪除多層目錄,也可以刪除單層)。還有個鐵掀用來埋東西的(remove(path):刪除文件),鐵掀旁邊立著個算命先生,它能給箱子和東西重新起名字(rename(src,dest):重命名目錄或者文件)。
過了過道,來到了一個小廳,小機器人告訴葫蘆娃,這個小洞也是屬於他的。洞頂上掛了個小喇叭(join(first,second):將first和second兩部分內容(字符串數據)拼接得到一個新的串(描述物理地址);【注意】:不關注路徑是否真實存在),它能把兩張紙上寫的路徑信息拼在一起大聲念出來,不管路徑是不是真的存在。這個時候,大喇叭念了一個地址,一下子來了三個穿制服的警察,他們能分別判斷這個地址存不存在(exists(path):判斷path描述的物理路徑是否真實存在;如果存在,返回True;反之,返回False)?判斷地址是不是個箱子(isfile(path):判斷path描述的物理路徑是否是一個文件;如果存在,返回True;反之,返回False)?葫蘆娃以為是蛇精的地址,就讓他們帶領去找這個地址。 但他們只能判斷,但並不能找到這個地址,所以,他們推薦了一個眼鏡給葫蘆娃。這個眼鏡左眼能告訴你剛才所念的地址中最後一個目標之前的路徑(dirname(path):返回path中最後一個\前面的部分(串),最終以字符串的形式返回),右眼鏡能告訴你地址最後的目標的名字(basename(path):返回path中最後一個\後面的部分(串),最終以字符串的形式返回)。這時突然有個電鋸過來把眼鏡從中間給鋸爛了,然後得意洋洋跑了,所以眼鏡就光榮犧牲(split(path):將path變量中最後一個\前面的部分(串),放入到元祖的第一個元素位;將path變量中最後一個\後面的部分(串),放入到元祖的第二個元素位;最終返回元祖對象)。葫蘆娃一想這咋辦啊,就把地址寫到一張紙上,結果又來一把電鋸,將地址從最後一個句號處給切斷了(splitext(path):將path變量中最後一個.前面的部分(串),放入到元祖的第一個元素位;將path變量中最後一個.以及其後面的部分(串),放入到元祖的第二個元素位;最終返回元祖對象)。葫蘆娃一臉懵逼。小機器人說他只能幫到這了。葫蘆娃謝過機器人繼續往裡走。
出了小洞,葫蘆娃來到了一塊露天小空地,空地中間擺著一個很大的硬石頭盤子(硬盤:計算機硬件的組成部分之一,它是一種容器,用來存儲數據,處理數據速度慢,存儲的數據量大,斷電死機內部數據不丟失了,持久存儲數據;),盤子裡放了個大內存卡(內存:計算機硬件的組成部分之一,它是一種容器,用來存儲數據,處理數據速度快,存儲的數據量小,斷電死機內部數據就丟失了,短暫性存儲數據;)。空地邊上靠石壁的地方整整齊齊放著一排石頭(字節:作為計算機存儲數據的單位(默認),底層唯一能夠識別並且運算的都是字節),石頭上有這些石頭做成的石像(字符:人類將字節封裝為另一個能夠直接識別的數據單位,底層還是字節)。石頭能組成各種各樣的東西。石壁上掛著三幅畫,分別是用石頭組成一個白頭鷹(ascii碼表:u.s.a設計出來的,字符范圍非常少;不包含很多其它國家的文字,英文字符占用內存1個字節),中間一幅是講解怎麼用石頭組成一個諾亞方舟(utf-8碼表:現今比較通用的一張編碼表,包含世界上所有國家的文字內容,范圍:0~65535之間, 1個漢字占用內存3個字節,1個英文字符占用內存1個字節),最右邊的畫是用石頭怎麼組成一只熊貓(gbk碼表:gbk屬於gb2312的擴充版,兼容gb2312中的所有字符,並且加入了更多的一些漢字內容; 1個漢字占用內存2個字節,1個英文字符占用內存1個字節在我們當前中國環境下,大多數情況默認就是使用gbk作為編碼),熊貓手裡還拿著一個貴賓卡!
葫蘆娃在白頭鷹的下面搬起一個石像把它拆成石塊(encode(encoding,errors):對字符串數據進行編碼操作,得到一個bytes類型的對象b = str1.encode(encoding=‘gbk’)),但是重新壘的時候按照熊貓畫的方法,結果就失敗了(decode(encoding,errors):對字符串數據進行解碼操作,理解:將字節還原為str類型的數據str2 = b.decode(encoding=‘utf-8’,errors=‘ignore’))。原來,這些石塊都是有編號的,如果你將石頭上的畫取下來,透過畫去看那些石頭,你能看到一個石像,但如果你透過其他的畫去看可能只看到奇形怪狀。所以,你只能透過一幅畫去看它下面的石頭,才能看到石像。
葫蘆娃環顧四周,發現有個石門,石門旁邊放著個大海蚌,它頭上有四個孔。如果你要打開石門需要將四個孔裡填滿東西(open(path,打開方式,[encoding=],[errors=]))。第一個孔裡放的是這個石門所處的具體地址,要寫在紙上再放進去(path:文件的路徑(字符串體現))。第二個孔裡要放進你來的目的,是只是來看看房間裡的石像(r:只讀字符),還是要把裡面的石像都換掉(w:只寫字符),還是要往裡面放新的石像(a: 追加字符),還是只是看看裡面的石頭(rb: 只讀字節)。第三個孔要放進去你要用哪幅畫看裡面的石像(encoding:確定字符集(編碼、解碼);如果不定義,默認使用gbk進行編碼和解碼使用),第四個孔你要告訴它如果畫與石像不匹配怎麼辦,是直接警告報警,還是就讓繼續看一些奇形怪狀出來(errors:取值:‘ignore’ 定義了errors = ‘ignore’;假設編碼解碼不一致,不會報錯,但是會亂碼不定義的話,就直接報錯了(出現異常))。
葫蘆娃告訴大海蚌它是來看看裡面的石像的,大海蚌張開了嘴,這時石門打開!
打開石門,葫蘆娃用照相機拍到了洞內所有的東西(read(): 一次將文件中所有的內部讀到程序中)。裡面排列著許多石像,這麼多的石像,還是幾個幾個的拍吧(read(num): 一次將num個字符讀入到程序中)。拍了幾個後,葫蘆娃感覺這樣有些慢,索性一列一列的拍照(readline():每次讀取文件中的一行數據(字符串數據))。最後拍了一張全部石像的隊列的照片(readlines():將文件中所有的行都以字符串的形式存入到一個列表中返回)。
拍完照片後,葫蘆娃盯著照片看,發小有個石像跟他爺爺很像。這時有個鹦鹉飛過來,它專注於看照片上的蛛絲馬跡。鹦鹉看了看照片,告訴葫蘆娃這個石像前面一共有多少塊石頭(tell():返回文件描述符所定位到的已讀字節數),要過去不太容易,但是,葫蘆娃決心已定,他喚來旺財,並告訴他要經過多少個石塊才能找到他爺爺(seek(num): 將文件描述符回到num個字節位置)。葫蘆娃順利找到了爺爺,開心開心極啦!接著爺爺想要回家。但葫蘆娃突然想留下點東西,他重新向大海蚌裡輸入四個紙條,告訴他要往裡面放一些石像。本來葫蘆娃想把石像全部換成一個小丑石像。後來不忍心,就只在石像最後面放了一個小丑石像。
(寫操作:'w'或者'wb' 特點:會覆蓋之前的內容
write(o):將o中的數據寫入到文件中.fw = open(path,'w')
# fw.write('老郭幫幫哒')
# fw.write('杜老師壯壯哒')
# fw.close()
#只在最後面添加
fw = open(path,'a')
fw.write('\n老郭又回來啦')
fw.close())
最後離開山洞,葫蘆娃還把洞門給關上了(關閉文件:記住一行代碼搞定:調用close()函數即可)。
把爺爺解救出來後,回到家爺爺給它舉行了成人禮,葫蘆娃們可以脫離家族成為一個真正的團體了,他們的組織就叫葫蘆七俠。
(內置函數:eval(str)參數:str類型的對象
作用:函數執行完畢後,將str字符串中字面量為iterable的內容,還原成為其相應的容器類型數據
舉例:
'[1,2,3,4]' --> [1,2,3,4]
'(11,22,33)' --> (11,22,33))