python核心編程第九章檔案部分雜記

來源:互聯網
上載者:User

標籤:轉換   list   一個   rem   %s   簡單   names   nbsp   字元   

最近開始學習python第九章檔案,做課後題中遇到了些問題,記錄下來以便後續複習或最佳化錯誤修正。

1.寫檔案時候擷取時間對象不知如何轉化為字串存入檔案,後面再讀檔案從字串轉為對象,後來查到可以用strftime和strptime2個函數來轉換。

a.時間datetime對象A可以通過A.strftime(“%Y-%m-%d %H:%M:%S %f”)轉換為字串

b.擷取的字串A可以通過datetime.datetime.strptime(A,格式化字串(如上))轉換為datetime時間對象。

同時瞭解到可以用pickle等模組將檔案內容序列化和還原序列化,簡單處理,省去細節過程,這個模組讀取隱藏檔是以二進位方式進行,所以w和r後必須加b。還有一個據說更好的模組shelve,尚未瞭解 。

例如: with open(path,‘wb‘) as f:

               pickle.dump(自訂結構對象,f)

              這裡dump將結構對象序列化存入檔案,還有一個dumps它只用於字串。

           with open(path,‘rb‘) as f:

               pickle.load(f)

           這裡讀取檔案內容還原序列化為原來的結構對象,loads同樣也只應用於字串。

另外在open(檔案名稱,開啟檔案)中遇到很多中英文路徑的問題,報異常無法找到,通過把路徑字串轉化為unicode後解決。

 

 

2.在匹配某些格式的檔案行時,應用到了Regex。這裡發現因為在[ ]中‘-’有特殊意義,所以如果要匹配‘-’則需要把它放到最前面避免引起錯誤如[-+*],同時在中括弧中這些有特殊意義的符號不需要前面加‘\’來匹配本身。

在編譯正則時compile(str),如果str中有多個分組(),而某些分組只匹配不需要捕獲的,需要在括弧中加?:如(?:\d{1,3})

3.在對列表刪除的時候,發現remove(元素),有重複元素的時候,只能刪除一個元素,可以用set先去重再刪。另外迴圈中最好不要刪除元素,導致迴圈對象變化容易出錯,可以深copy一個對象,然後迴圈原來的對象,對新對象進行操作。

4.windows系統中,用cmd顯示python指令碼輸出的print時,因為cmd軟體解碼方式為GBK,如果指令碼是用UTF-8寫的,則print輸出的語句需要從UTF-8解碼為unicode再編碼為GBK後,才能在CMD中正常顯示

5.檔案通用方式:開啟多個檔案可以這麼寫:with open() as f1,open() as f2:              想要清除檔案內容用f.truncate()        os.getcwd()擷取當前路徑。

                           一般想要找到某個檔案,我喜歡用os.listdir()然後拼接路徑檔案,遞迴直到每個路徑下沒有目錄只有檔案。  這次發現遺漏了os.walk()它會便利所有目錄可以得到一個三元tupple(dirpath, dirnames, filenames), 

                            第一個為起始路徑,第二個為起始路徑下的檔案夾,第三個是起始路徑下的檔案。

                             dirpath 是一個string,代表目錄的路徑,

                             dirnames 是一個list,包含了dirpath下所有子目錄的名字。

                             filenames 是一個list,包含了非目錄檔案的名字。

                             這些名字不包含路徑資訊,如果需要得到全路徑,需要使用os.path.join(dirpath, name).

6.shutil模組, shutil.copy()可以直接複製一個檔案或目錄到另一個        shutil.rmtree()可以遞迴地刪除一個目錄及其內所有內容。

 

python核心編程第九章檔案部分雜記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.